【发布时间】:2017-11-09 00:30:18
【问题描述】:
背景 我有一个表,其中包含一个带有逗号分隔字符串的 varchar(它有多行类似于this 问题。不幸的是,我无法找到将 csv varchar 简单地更改为临时表的方法,所以我是正在考虑自己拆分它。(我也很感激任何解决这个问题的答案,尽管它可能应该是一个单独的问题?)。
问题
我已成功拆分字符串,现在正在生成类似于以下内容的输出:
-------------------------------------
| Row Index | Column Index | Value |
-------------------------------------
| 0 | 0 | (0,0) |
| 0 | 1 | (1,0) |
| 0 | 2 | (2,0) |
| 1 | 0 | (0,1) |
| 1 | 1 | (1,1) |
| 1 | 2 | (2,1) |
| 2 | 0 | (0,2) |
| 2 | 1 | (1,2) |
| 2 | 2 | (2,2) |
-------------------------------------
我想对此进行旋转,以便将其插入临时表中,最终结果如下所示:
-------------------------------------
| Column 1 | Column 2 | Column 3 |
-------------------------------------
| (0,0) | (1,0) | (2,0) |
| (0,1) | (1,1) | (2,1) |
| (0,2) | (1,2) | (2,2) |
-------------------------------------
旁白
- 列数是提前知道的,但也欢迎不依赖于此的答案。
- 我知道我可以反复左外连接第一个表来获得这个结果,但这需要每列外连接一次(因为我有大约 9 列,这将是很多重复),我假设还有另一个方式。
- 性能不是关键,但最终表格中将有大约 2000 行 8 列。
【问题讨论】:
-
您可能想阅读这篇解释规范 SQL 数据透视技术的文章:modern-sql.com/use-case/pivot
-
干杯马库斯,我以前必须解决这个问题,但希望我当时遇到过这个问题(我以前不得不使用 JOIN 多次方法)。
标签: sql sql-server