Sql-Server

SUM (CASE WHEN) AS.. 查詢

  • July 6, 2016

我對 SQL 很陌生,我正在嘗試並未能獲得正確的語法,我認為這將是一個非常簡單的查詢。

我有一個包含四列的表(CustomerSales):

  • Period: 年月的組合,例如2015012015 年 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 年銷售額添加為額外列,我將不勝感激。

您只需要平衡您的().

刪除(between whenandleft或添加)after '2015'

引用自:https://dba.stackexchange.com/questions/143053