【问题标题】:convert rows in colums in sql server 2005在 sql server 2005 中转换列中的行
【发布时间】:2013-05-20 20:34:14
【问题描述】:

我一直在寻找一种在多个列、一个单元格中显示一行的方法。它的内容用逗号分隔。

例如,代替:

ProjectID      Label
————           ——–
1200           label1
1200           label2
1200           label3

我希望我的查询结果如下所示:

ProjectID                      1        2        3
————                   ——– 
1200                          label1  label2, label3

提前致谢

【问题讨论】:

标签: sql sql-server sql-server-2005 pivot


【解决方案1】:

这比仅使用pivot 更具挑战性,但也只是一点点。问题是您没有一列来指定标签的位置,所以您必须添加它。

这是一个使用聚合的解决方案:

with t as (
      select t.*, row_number() over (partition by ProjectId order by label) as seqnum
      from t
)
select ProjectId,
       max(case when seqnum = 1 then label end) as [1],
       max(case when seqnum = 2 then label end) as [2],
       max(case when seqnum = 3 then label end) as [3]
from t
group by ProjectId;

这是使用枢轴的解决方案:

with t as (
      select t.*, row_number() over (partition by ProjectId order by label) as seqnum
      from t
)
select ProjectId, [1], [2], [3]
from t
pivot (max(label) for seqnum in ([1], [2], [3])
      ) as pvt

【讨论】:

    猜你喜欢
    • 2012-08-04
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多