[英]Static and Dynamic value to Column Name in SQL table
檢查下表:
--------------------------------
ID Value GroupName
--------------------------------
1 10 A
2 12 B
3 19 A
4 5 B
5 9 A
6 12 B
7 17 C
8 21 C
9 8 C
10 15 A
--------------------------------
我想要以下輸出:
-------------------------
A B C
-------------------------
10 12 17
19 5 21
9 12 8
15 NULL NULL
-------------------------
因此, 'GroupName'
字段中的所有值將成為一個新列。
有誰知道如何在SQL 2008中做到這一點?
謝謝。
請嘗試使用PIVOT
; 下面給出的示例僅適用於3個靜態值A, B and C
:
select [A], [B], [C] From(
select
Value, GroupName,
ROW_NUMBER() over (partition by GroupName order by GroupName) RN
From
tbl
)up pivot (sum(value) for GroupName in ([A], [B], [C]))x
對於動態值,
DECLARE @pivv NVARCHAR(MAX),@Query NVARCHAR(MAX)
SELECT @pivv=COALESCE(@pivv+',','')+ QUOTENAME(GroupName)
from tbl group by GroupName
IF ISNULL(@pivv, '')<>''
set @Query=
'select '+@pivv+' From(
select
Value, GroupName,
ROW_NUMBER() over (partition by GroupName order by GroupName) RN
From
tbl
)up pivot (sum(value) for GroupName in ('+@pivv+'))x'
exec (@Query)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.