用于“不完全透视”的T-SQL

时间:2013-10-07 14:16:12

标签: sql-server tsql pivot

我有以下源数据(数据是几百行源的摘录。):

ID  CodeID  Code
3749    69  354
3750    69  864
33721  130  XXX
33722  130  319
30446  159  XXX
30447  159  XXX

并使用T-SQL我需要实现:

CodeID  Code1   Code2
69      354     864
130     XXX     319
159     XXX     XXX

这似乎不适合数据透视表的结构,我不知道如何实现这一点。有没有人有任何建议。

1 个答案:

答案 0 :(得分:5)

如果您首先使用pivot

为每个值分配一个数字,则可以使用row_number()执行此操作
select codeid, [1] as Code1,[2] as Code2 -- .... ,[3] etc
from
( 
    select codeid, code, ROW_NUMBER() over (partition by codeid order by id) rn
    from yourtable
) p
pivot (max(code) for rn in ([1],[2])) p2 --, [3]... etc