2009-10-20 84 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