我可以把这张桌子包起来吗?

时间:2012-01-31 04:03:32

标签: sql-server-2005

我有一张桌子:

    ID   Name
    --   -----
    1    aaa
    2    bbb
    2    ccc
    2    ddd
    3    eee
    3    fff
    4    ggg
    5    hhh

我需要透视此表,以便生成的表如下所示:

    ID   Name1  Name2  Name3  Name4  Name5  Name6
    --   -----  -----  -----  -----  -----  -----
    1    aaa    NULL   NULL   NULL   NULL   NULL
    2    bbb    ccc    ddd    NULL   NULL   NULL
    3    eee    fff    NULL   NULL   NULL   NULL
    4    ggg    NULL   NULL   NULL   NULL   NULL
    5    hhh    NULL   NULL   NULL   NULL   NULL

我必须在SSIS中的XML Source生成的表上使用它。 请帮忙!

2 个答案:

答案 0 :(得分:1)

假设您的表名为Test:

select ID, [1] Name1, [2] Name2, [3] Name3, [4] Name4, [5] Name5, [6] Name6
from
(
    select id, name, ROW_NUMBER() over (partition by id order by id) as RowNum from Test
) AS A
PIVOT
(
    min(name)
    for RowNum in ([1], [2], [3], [4], [5], [6])
) as PivotTable;

答案 1 :(得分:0)

如果您正在使用SSIS,则可以在数据流任务中使用pivot和unpivot数据流元素。