2009-10-20 99 views
0

當我這樣做:以下聲明有什麼問題?

select col1,case when [pivot1]=1 then '-' else '' end [pivot1], 
case when [pivot2]=1 then '-' else '' end [pivot2] 
from 
(select col1,col2,col3 from tbl) as c 
pivot 
(sum(col3) for col2 in 
([pivot1],[pivot2]))as pvt 

,一切工作正常。

當我這樣做:

select col1,[pivot1],[pivot2] 
from 
(select col1,col2,col3 from tbl) as c 
pivot 
(sum(case col3 when '-' then 1 else 0 end) for col2 in 
([pivot1],[pivot2]))as pvt 

我得到以下錯誤:

"Msg 156, Level 15, State 1, Line 31 
Incorrect syntax near the keyword 'case'." 

我的目的是寫一個case語句,而不是多個做這種轉換。

我在做什麼錯?

回答

5

case when col3 = '-' then 1 else 0 end 
+0

我仍得到相同的錯誤消息 – 2009-10-20 05:40:11

+0

更換你的case語句我想接近它有點不同: DECLARE @T TABLE(資金量,RegionId NVARCHAR(5)); INSERT INTO @T SELECT \t SUM(CASE WHEN COL3!= 0 THEN ELSE 1 0 END) ,\t COL2 FROM \t TBL GROUP BY COL2 SELECT * FROM @T PIVOT ( SUM(Amount) FOR [RegionId] IN([US],[CA]) )AS p – 2009-10-20 06:50:52

+0

但是我無法插入值..它已經在表中。從數據庫 – 2009-10-20 08:38:38