【发布时间】:2017-12-20 12:57:00
【问题描述】:
有没有什么方法可以在不使用pivot和unpivot方法的情况下在sql中显示水平数据?下图是使用 pivot 和 unpivot 的示例,但我想知道还有其他方法吗?
示例
原始数据
+----+-------+-----------------+
| id | Place | Location |
+----+-------+-----------------+
| 1 | CP01 | 3.1415,101.7231 |
| 2 | CP02 | 3.2314,101.3254 |
| 3 | CP03 | 3.9415,101.0192 |
| 4 | CP04 | 3.5490,102.0435 |
| 5 | CP05 | 3.2562,101.2597 |
| 6 | CP06 | 3.1134,102.5915 |
+----+-------+-----------------+
水平数据
+----------+-----------------+-----------------+-----------------+-----+
| Cols | 1 | 2 | 3 | ... |
+----------+-----------------+-----------------+-----------------+-----+
| Location | 3.1415,101.7231 | 3.2314,101.3254 | 3.9415,101.0192 | ... |
| Place | CP01 | CP02 | CP03 | ... |
+----------+-----------------+-----------------+-----------------+-----+
【问题讨论】:
-
你为什么不想使用
PIVOT? -
PIVOT不会产生这样的行。这正是您希望数据的样子吗?您必须将两个 PIVOT 合并在一起,或者在您的案例/时间变得非常广泛,可能在交叉连接中生成任意行 -
...或者只是在前端正确地进行这种表示转换,而不是试图让 DBMS 生成 2 'rows per row' 之类的...
标签: sql sql-server pivot