2011-10-07 30 views
2

我收到了一個非常意外的錯誤,我不確定它是由於兼容性設置還是由於某種愚蠢的原因。 (我正在使用SQL Server 2008 R2)。我的查詢在數據透視中的聚合上失敗。Aggregate上的SQL PIVOT語法錯誤

Here is the full sample code.

段:

select * from @sales 
pivot 
(
    sum(Amount) 
    for Quarter 
    in (Q1, Q2, Q3, Q4) 
) as p 

上線sum(Amount)

回答

1

作品對我來說表定義

declare @sales table 
(
[Year] int, 
Quarter char(2), 
Amount float 
) 

Incorrent語法,因此推測它兼容級別問題。你可以做

SELECT 
    [Year], 
    SUM(CASE WHEN Quarter = 'Q1' THEN Amount END) AS Q1, 
    SUM(CASE WHEN Quarter = 'Q2' THEN Amount END) AS Q2, 
    SUM(CASE WHEN Quarter = 'Q3' THEN Amount END) AS Q3, 
    SUM(CASE WHEN Quarter = 'Q4' THEN Amount END) AS Q4 
from @sales 
group by [Year] 

對於在SQL Server 2000兼容模式下工作的解決方案。

+0

我該在哪裏更改兼容模式? –

+0

語法錯誤不在「pivot」附近,所以我認爲它理解關鍵字。 –

+1

@PeetBrits - 'ALTER DATABASE [YourDB] SET COMPATIBILITY_LEVEL = 100'或通過SSMS GUI數據庫屬性選項卡。在2000兼容模式數據庫中,我收到了與您相同的錯誤消息('sum'.'附近的語法錯誤)。 –