【问题标题】:Display Rows side by side, Kind of pivot并排显示行,枢轴类型
【发布时间】:2023-03-17 20:29:02
【问题描述】:

我有一张这样的桌子

Column1 | Column2
-------------------
A       | 1
A       | 2
A       | 3
B       | 4
B       | 5
B       | 3
C       | 2
C       | 2
C       | 2
D       | 7
D       | 8
D       | 9

我想输出为

A  |  B  |  C  |  D
--------------------
1  |  4  |  2  |  7
2  |  5  |  2  |  8
3  |  3  |  2  |  9

它将具有固定的行/列,例如 A、B、C、D。 您能否建议 SQL Server 2005/2008 中的查询?

【问题讨论】:

  • 您需要另一列才能在此处获得确定性结果。
  • 同意马丁。使用现有数据,绝对无法告诉 SQL Server 您希望 B/5 在 B/3 之前出现。表中还有哪些其他列?

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


【解决方案1】:

最好知道表中的聚集键,因为结果之后的顺序可能会有所不同。马丁是对的,试试这个,它会让你开始:

SELECT pvt.A,
       pvt.B,
       pvt.C,
       pvt.D
FROM   (SELECT *,
               row=ROW_NUMBER() OVER(PARTITION BY Column1 ORDER BY (SELECT 1))
        FROM   yourtable) AS A 
        PIVOT (MIN(Column2) FOR Column1 IN ([A], [B], [C], [D]))
       AS pvt 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多