用SQL转置表

时间:2009-01-13 03:47:48

标签: sql sql-server tsql

我有一个像这样的SQL表


PV      Area    CouterParty

851     M010    Name1

561     M011    Name2

869     M012    Name3
...

我需要转发它,使用T-SQL(不报告服务或其他任何东西),所以它看起来像这样:

CounterParty M010 M011 M012 .... 

Name1        851 

Name2             561 

Name2                  869 

问题是我不知道我会有多少区号,所以真的可以有任意数量的列。

我有什么想法可以做到这一点?万分感谢

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:0)

您可以通过游标循环和临时表来完成此操作。

选择所有区号, 为每个获取的行运行游标 根据需要将行插入临时表 关上你的光标 从临时表中选择

答案 2 :(得分:0)

如果您使用SQL Server 2005或最新的

,请使用pivot功能
SELECT 
    CouterParty ,
    [M010] ,
    [M011],
    [M012]
FROM    ( SELECT    
            PV ,Area    ,CouterParty
          FROM      TablesName AS T
        ) AS T1Temp PIVOT ( Sum(PV) FOR T1Temp.CouterParty IN ( [M010],
                                                          [M011],
                                                          [M012] ) )  As PivotTable