2016-05-31 65 views
0

我有以下查询,为我的生活已经福尔戈如何总结两列,将创建一个“合计”栏SQL - 如何总结两秒语句来创建一个总计列

SELECT username as 'username', 
    count (case when casestype <> 'car' 
     OR casestype <> 'van' 
     OR casestype <> 'bike' 
     OR casestype <> 'NONE' 
     THEN 1 ELSE NULL END) as 'non-auto', 
    count (case when casestype = 'car' 
     OR casestype= 'van' 
     OR casestype = 'bike' 
     THEN 1 ELSE NULL END) as 'auto' 
FROM Case WITH (NOLOCK)    
WHERE CaseDate BETWEEN '01 may 2016' AND '31 may 2016') 
GROUP BY username 

我想有非自动+自动

+0

请在您使用的数据库中标记您的问题。 –

+0

“左外连接”后没有表格。请先解决。 –

+0

您发布的查询不工作。请添加更多信息。请在这里看到如何开始问:https://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ – TheGameiswar

回答

4
SELECT username, 
     sum(case when casestype not in ('car', 'van', 'bike', 'NONE') 
       then 1 else 0 
      end) as non_auto, 
     sum(case when casestype in ('car', 'ban', 'bike') then 1 else 0 
      end) as auto, 
     sum(case when casestype <> 'NONE' then 1 else 0 end) as total 
FROM [Case]     
WHERE CaseDate BETWEEN '2016-05-01' and '2016-05-31' 
GROUP BY username; 

其他建议总列:

  • innot in AR比一系列or陈述更可读。
  • 使用ISO标准日期格式。 YYYY-MM-DD是我的首选,尽管SQL Server对YYYYMMDD略有偏好。需要分别计算total。如果你想使用列别名,你需要子查询或CTE。
  • 不要对列别名使用单引号。只能将它们用于字符串和日期常量。