Sql-Server
SUM (CASE WHEN) AS.. 查詢
我對 SQL 很陌生,我正在嘗試並未能獲得正確的語法,我認為這將是一個非常簡單的查詢。
我有一個包含四列的表(CustomerSales):
Period
: 年月的組合,例如201501
2015 年 1 月;Customer_no
;Sales
;Class
,即客戶細分。我目前有以下查詢,按客戶編號提取 2015 年“R”類的所有銷售額:
select Customer_no, class, SUM (Sales) as '2015' from CustomerSales where left(Period,4) = '2015' and class = 'R' Group by Customer_no, class
這將返回 Customer_no、class 和 2015 Sales 的簡單 3 列輸出。
我想在表中為每一年添加列,即為 2010-2014 年的每一年再添加五列。
為此,我嘗試將
left(Period,4) = '2015'
表達式移動到一個case when
條件中,然後我的意圖是在 2014 年、2013 年等重複此操作。但在我嘗試包含其他年份之前,查詢就失敗了。目前查詢(僅 2015 年)是:select Customer_no, class, SUM (case when(left(Period,4) = '2015' then Sales else 0 end)) as '2015' from CustomerSales where class = 'R' Group by Customer_no, class
我得到的錯誤是
關鍵字“then”附近的語法不正確。
對於如何修復上述查詢並將 2010-2014 年銷售額添加為額外列,我將不勝感激。
您只需要平衡您的
()
.刪除
(
betweenwhen
andleft
或添加)
after'2015'
。