Sql-Server-2005

使用樞軸按月交叉表查詢的銷售額

  • September 11, 2014

我正在嘗試使用 Sql Server 2005 中的 PIVOT 按月顯示銷售額。我知道這是一個常見問題,但我無法弄清楚我在這裡缺少什麼:

select ShippedYear, 1 as Jan, 2 as Feb
from
(
   select  datepart(year, ss.SHIPPED_DATE) as ShippedYear
         , ss.SHIPPED_AMOUNT as Amount
         , datepart(month, ss.SHIPPED_DATE)) as MonthCode
   from    dbo.SALES_SHIPPER_LINE ssl join dbo.SALES_SHIPPER ss on ss.ID = ssl.SHIPPER_ID
) ps
pivot(
   sum(amt) for MonthCode in (1,2,3,4,5,6,7,8,9,10,11,12) --this shows error??
) piv;

我的數據透視表中的“in”子句出現錯誤。誰能告訴我我做錯了什麼?

由於您的新列是數字,因此您需要使用方括號對名稱進行轉義:

select ShippedYear, 1 as Jan, 2 as Feb
from
(
   select  datepart(year, ss.SHIPPED_DATE) as ShippedYear
         , ss.SHIPPED_AMOUNT as Amount
         , datepart(month, ss.SHIPPED_DATE)) as MonthCode
   from    dbo.SALES_SHIPPER_LINE ssl join dbo.SALES_SHIPPER ss on ss.ID = ssl.SHIPPER_ID
) ps
pivot(
   sum(amt) for MonthCode in ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12])
) piv;

方括號[]用於分隔標識符。由於列名以數字開頭,因此必須對其進行分隔。有關詳細資訊,請參閱 MSDN。

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