2016-05-31 64 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。
  • 不要對列別名使用單引號。只能將它們用於字符串和日期常量。