当前位置: 代码迷 >> Sql Server >> case when 多条件求和有关问题
  详细解决方案

case when 多条件求和有关问题

热度:69   发布时间:2016-04-24 10:15:22.0
case when 多条件求和问题
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,用[]包住,!=可以换成<>
  相关解决方案