【发布时间】:2018-02-06 18:24:30
【问题描述】:
我正在寻找一种使用 Pivot 将 SQL Server 中的行转换为列的有效方法。我已经使用带有案例和连接的聚合函数分别获得了输出,但我希望 PIVOT 是一种处理这种行到列转换的清晰方法。
示例数据是
-------------------------------------
| ID | Row | First |Last | Postal |
------------------------------------
| 1 | 1 | John | Doe | B4K |
| 1 | 2 | Matt | Kev | 2H1 |
| 2 | 1 | Hary | Lot | L26 |
| 2 | 2 | Fork | Har | M3R |
| 3 | 1 | Yuv | Hal | L39 |
------------------------------------
这是我的结果:
| ID | First1 |Last1 | Postal1 | First2 |Last2 | Postal2 |
-----------------------------------------------------------
| 1 | John | Doe | B4K | Matt | Kev | 2H1 |
| 2 | Hary | Lot | L26 | Fork | Har | M3R |
| 3 | Yuv | Hal | L39 | NULL | NULL | NULL |
-----------------------------------------------------------
如何使用 PIVOT 实现此结果?
【问题讨论】:
-
更改聚合函数以获得预期结果。你不需要
Pivot -
如果您不知道需要将多少行转换为列(在您的情况下为 2、2、1),pivot 无法帮助您。您应该构建动态枢轴,这将是复杂的查询
-
我知道每个 ID 的最大限制。所以,在这种情况下,@Denis UnPivot/Pivot 应该仍然可以工作。
标签: sql sql-server pivot