【发布时间】:2016-12-02 16:04:48
【问题描述】:
我有一个表,我想在 SQL 语句中取消透视。它由一个人和电话 1 到 5 组成。现在我正在为每部电话做一个联合,但我担心它会导致性能问题。
列:
PERSON_GUID,
PHONE_1, PHONE_1_VOICE_FLG,
PHONE_2, PHONE_2_VOICE_FLG,
PHONE_3, PHONE_3_VOICE_FLG,
PHONE_4, PHONE_4_VOICE_FLG,
PHONE_5, PHONE_5_VOICE_FLG
在考虑性能的情况下,我如何最好地取消透视该行,以便结果是:
PERSON_GUID, PHONE_NO, VOICE_FLG
【问题讨论】:
-
您是否尝试过使用 PIVOT/UNPIVOT 命令technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx
-
应该是unpivot
-
@marc_s 如果 OP 使用 UNION 而不是他正在执行 unpivot。请回滚。
-
@DuduMarkovitz:你认为我应该“回滚”什么?我只是尝试清理演示文稿,并将“mssql”替换为正确的产品名称 - SQL Server - 我没有更改任何其他内容.....
-
我同意这听起来像是多列的反透视。 Jonesk 也许您可以添加一些示例数据和所需的结果来澄清?
标签: sql sql-server pivot