這裏是動態版本
測試表
create table #test(id int,name char(1),line char(1))
insert #test values(1 , 'A','Z')
insert #test values(2 , 'B','Y')
insert #test values(3 , 'C','X')
insert #test values(4 , 'C','W')
insert #test values(5 , 'D','W')
insert #test values(5 , 'D','W')
insert #test values(5 , 'D','P')
現在運行這個
declare @names nvarchar(4000)
SELECT @names =''
SELECT @names = @names + line +', '
FROM (SELECT distinct line from #test) x
SELECT @names = LEFT(@names,(LEN(@names) -1))
exec('
SELECT *
FROM(
SELECT DISTINCT Id, Name,Line
FROM #test
) AS pivTemp
PIVOT
( COUNT(Line)
FOR Line IN (' + @names +')
) AS pivTable ')
現在添加一行到表及以上再次運行查詢,你會看到B
insert #test values(5 , 'D','B')
注意:當然,所有使用動態SQL的問題適用,如果你可以使用sp_executesql的,但由於參數不查詢一樣使用真的是沒有一點
'Z Y X W'是固定的嗎? – 2010-08-27 18:01:12
是的,在結果他們將是列的名稱 - 他們可以被稱爲任何東西。 – 2010-08-27 18:02:30
「如果該值存在,則在字段數據中應用1」 - 是否意味着1表示該值的至少一個實例,或者該數字是否應反映與該組關聯的值的計數? – 2010-08-27 18:20:11