T-SQL 中的数据透视抛出语法错误

Pivot in T-SQL throws syntax error

我正在尝试在 T-SQL 中做一个支点,即 return SUM(INVOICE_AMOUNT) 2015 年和 2016 年每个 CUST_ID

但是我使用的 SQL 抛出一个错误:

Incorrect syntax near '('

而且我无法识别语法错误。有人可以告诉我它有什么问题吗?

SELECT 
    H.CUST_ID, [2015], [2016]
FROM
    (SELECT  
         H.INVOICE_AMOUNT, YEAR(H.INVOICE_DT)
     FROM 
         BILLING_HEADER H) p
PIVOT
    SUM(H.INVOICE_AMOUNT) FOR YEAR(INVOICE_DT) IN ([2015], [2016])) AS pvt

Year(INVOICE_AMOUNT) 有 [2015] 和 [2016] 的静态选项,所以不确定 SQL..

有什么问题

PIVOT 运算符在 FOR 关键字之后需要 column that contains the values that will become column headers。给 YEAR(INVOICE_DT) 一个别名并在 FOR

之后使用该别名
SELECT H.CUST_ID, [2015], [2016]
FROM
(
    SELECT H.INVOICE_AMOUNT, YEAR(H.INVOICE_DT) AS INVOICE_YEAR
    FROM BILLING_HEADER H
) p
PIVOT
    SUM(H.INVOICE_AMOUNT)
    FOR INVOICE_YEAR in ([2015],[2016])
) as pvt

本质上,PIVOT 运算符执行 GROUP BY 操作,它通过从源 [=24] 中删除 PIVOT 运算符中使用的列来猜测应该将哪个列放入 GROUP BY 子句=] 列。这种猜测不适用于功能。在

查看一些信息