我无法弄清楚我在此PIVOT中做错了什么

时间:2018-09-18 00:08:42

标签: sql tsql

我已经搜索了该站点,并且我认为我做得正确,但是已经晚了,现在我必须脑子死了。这个PIVOT SQL有什么问题?

SELECT  AccountNum  
        , MONTH(MAX(DealBookDate)) AS Month  
        , YEAR(MAX(DealBookDate))  AS Year  
FROM  
(  
    SELECT AccountNum   
         , MONTH(MAX(DealBookDate)) AS mth   
         , YEAR(MAX(DealBookDate))  AS yr   
         , DealBookDate  
    FROM vehicle.sales  
    WHERE accountnum IN  
    ('R1', 'R2', 'R3', 'R4', 'R5', 'R6', 'R7', 'R8', 'R9', 'R10', 'R11',   
'R12', 'R13', 'R14', 'R15')  
    GROUP BY  AccountNum  
            , DealBookDate  
) AS SourceTable  
PIVOT  
(  
  COUNT(DealBookDate)  
    FOR AccountNum  
    IN  
    (  
    R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15
    )  
)  
AS PivotTable;  

这是我收到的错误消息:

  

消息207,级别16,状态1,第31行无效的列名称   “ AccountNum”。消息207,级别16,状态1,第32行无效列   名称为“ DealBookDate”。消息207,级别16,状态1,第33行无效   列名称“ DealBookDate”。

请对我好一点,毕竟是星期一。

2 个答案:

答案 0 :(得分:0)

尝试以下方式

   SELECT   *  
        FROM  
        (  
            SELECT * 
            FROM vehicle.sales  
            WHERE accountnum IN  
            ('R1', 'R2', 'R3', 'R4', 'R5', 'R6', 'R7', 'R8', 'R9', 'R10', 'R11',   
        'R12', 'R13', 'R14', 'R15')             
        ) AS SourceTable  
        PIVOT  
        (  
          COUNT(DealBookDate)  
            FOR AccountNum  
            IN  
            (  
            [R1], [R2], [R3], [R4], [R5], [R6],[R7],[R8],[R9], [R10], [R11], [R12], [R13], [R14], [R15]
            )  
        )  
        AS PivotTable; 

答案 1 :(得分:0)

这是正确的语法。

rename