以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  sql Sever 语句与 Access的差别  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=144433)

--  作者:nxhylczh
--  发布时间:2019/12/19 18:10:00
--  sql Sever 语句与 Access的差别
S e l e c t left(P01.科目编码,4) As 科目编码,
Sum(P01.借方本币金额) As 借方金额, 
Sum(P01.贷方本币金额) As 贷方金额,
sum(iif(借方本币金额<>0,数量,0)) As 借方数量,
sum(iif(贷方本币金额<>0,数量,0)) As 贷方数量,
sum(iif(借方本币金额<>0,原币金额,0)) As 借方原币金额,
sum(iif(贷方本币金额<>0,原币金额,0)) As 贷方原币金额 
FROM P01 WHERE P01.账套ID=\'NXHY-191205-0005\' And P01.年=2019 And P01.月=1 AND P01.凭证编号 Between 11 And 11  GROUP BY left(P01.科目编码,4)
以上代码  在Access上执行没有问题

在Sqlsever上执行报   \'<\' 附近有语法错误
不知道是什么原因

--  作者:y2287958
--  发布时间:2019/12/19 19:14:00
--  
SQL中的iif用Case When替代
--  作者:nxhylczh
--  发布时间:2019/12/19 19:21:00
--  
这个真不会写
--  作者:nxhylczh
--  发布时间:2019/12/19 19:34:00
--  
百度搜索SQlsever 是支持IIF函数的
我估计又是一个Bug


--  作者:有点蓝
--  发布时间:2019/12/20 8:33:00
--  
不可能支持的,百度链接发过来看看?




--  作者:nxhylczh
--  发布时间:2019/12/20 9:07:00
--  
https://zhidao.baidu.com/question/588456473070618645.html
--  作者:有点蓝
--  发布时间:2019/12/20 9:42:00
--  
随便说的吧。百度知道的回答您也信!?我还以为是官方文档的链接呢!
--  作者:nxhylczh
--  发布时间:2019/12/20 10:09:00
--  
S ELECT LEFT
( P01.科目编码, 4 ) AS 科目编码,
SUM ( P01.借方本币金额 ) AS 借方金额,
SUM ( P01.贷方本币金额 ) AS 贷方金额,
SUM ( CASE WHEN 借方本币金额<> 0 THEN 数量 ELSE 0 END ) AS 借方数量,
SUM ( CASE WHEN 贷方本币金额<> 0 THEN 数量 ELSE 0 END ) AS 贷方数量,
SUM ( CASE WHEN 借方本币金额<> 0 THEN 原币金额 ELSE 0 END ) AS 借方原币金额,
SUM ( CASE WHEN 贷方本币金额<> 0 THEN 原币金额 ELSE 0 END ) AS 贷方原币金额 
FROM P01 
WHERE
P01.账套编码 = \'NXHY-191205-0005\' 
AND P01.年 = 2019 
AND P01.月 = 1 
AND P01.凭证编号 BETWEEN 16  AND 16 
GROUP BY LEFT (P01.科目编码, 4 )
[此贴子已经被作者于2019/12/20 10:09:50编辑过]