【问题标题】:SQL Query; Horizontal to VerticalSQL查询;水平到垂直
【发布时间】:2013-12-22 21:14:41
【问题描述】:

我的数据库中有这些数据:

+-------------+------------+--------------------------------------+
| resource_id | rkident_id |              stringval               |
+-------------+------------+--------------------------------------+
|          21 |         15 | Hostname1                            |
|          21 |         16 | vm-143                               |
|          21 |         17 | 91345645-1E18-4C76-B119-C14E950FB086 |
|          22 |         15 | Hostname2                            |
|          22 |         16 | vm-179                               |
|          22 |         17 | 91345645-1E18-4C76-B119-C14E950FB086 |
+-------------+------------+--------------------------------------+

但我想这样显示:

+-------------+-------------+--------------------------------------+
| IDENTVALUE1 | IDENTVALUE2 |             IDENTVALUE3              |
+-------------+-------------+--------------------------------------+
| Hostname1   | vm-143      | 91345645-1E18-4C76-B119-C14E950FB086 |
| Hostname2   | vm-179      | 91345645-1E18-4C76-B119-C14E950FB086 |
+-------------+-------------+--------------------------------------+

请帮忙,谢谢!

【问题讨论】:

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


【解决方案1】:

应该这样做:

SELECT
  max(CASE WHEN rkident_id = 15 THEN stringval END) IDENTVALUE1,
  max(CASE WHEN rkident_id = 16 THEN stringval END) IDENTVALUE2,
  max(CASE WHEN rkident_id = 17 THEN stringval END) IDENTVALUE3
FROM t
GROUP BY resource_id

输出:

| IDENTVALUE1 | IDENTVALUE2 |                          IDENTVALUE3 |
|-------------|-------------|--------------------------------------|
|   Hostname1 |      vm-143 | 91345645-1E18-4C76-B119-C14E950FB086 |
|   Hostname2 |      vm-179 | 91345645-1E18-4C76-B119-C14E950FB086 |

小提琴here.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-27
    • 2010-09-30
    • 2014-05-25
    • 1970-01-01
    • 2013-08-09
    • 2020-02-25
    • 2012-03-04
    相关资源
    最近更新 更多