test表有Tcode,Name,TYPE ,CODE,charge 5个字段
select Tcode,Name,
sum(
CASE WHEN TYPE = 'C' AND CODE!='1' THEN charge
else if TYPE = 'C' AND CODE='1' THEN -charge
else 0 END) as CTotal,
sum(
CASE WHEN TYPE = 'D' AND CODE!='1' THEN charge
else if TYPE = 'D' AND CODE='1' THEN -charge
else 0 END) as DTotal
from test where 1=1
GROUP BY Tcode,Name
想根据 Tcode,Name分组求charge和(这边又有条件,但CODE=1是要减的)
这样写会提示错误,谢了!!!
------解决方案--------------------
SELECT Tcode ,
Name ,
SUM(CASE WHEN [TYPE] = 'C'
AND CODE != '1' THEN charge
WHEN [TYPE] = 'C'
AND CODE = '1' THEN -charge
ELSE 0
END) AS CTotal ,
SUM(CASE WHEN [TYPE] = 'D'
AND CODE != '1' THEN charge
WHEN [TYPE] = 'D'
AND CODE = '1' THEN -charge
ELSE 0
END) AS DTotal
FROM test
WHERE 1 = 1
GROUP BY TcodeNAMEe
------解决方案--------------------
case when xxx then xxx when xxx then xxx else xxx end
case when 里面没有else if的用法
------解决方案--------------------
另外关键字,如type,用[]包住,!=可以换成<>