【发布时间】:2013-05-11 11:13:37
【问题描述】:
我有一个带有标签列的表,其中包含大约 1000 个不同的标签。我想为每个不同的标签创建一个包含一列的新表,列名将是标签值。使用 T-SQL 是否有一种简单易用的方法来做到这一点? SQL Server 2005 及更高版本中的任何内容都可以。
这是我的意思的一个例子:
Table:
Tag Value Timestamp
tag1 123 ---
tag1 456 ---
tag2 854 ---
tag3 923 ---
.
.
.
tag90 324 ---
New Table:
tag1 tag2 tag3 ... tag90
123 854 923 324
456 ...
更新:
我知道限制(表中的列数),但是列不会稀疏,并且任何列中都不会有空值或 0 值。
我想要这个表的原因是我想针对这个新表的列运行 SSAS 聚类算法。
【问题讨论】:
-
为什么需要将数据存储在1000列的表中?如果您需要以该格式显示数据,则可以 PIVOT。将数据存储在 1000 列中是个坏主意。
-
我的观点是,有一些方法可以将数据转换为您想要的格式,而无需将其存储在 1000 列中。
-
@SpaceghostAli 几乎没有充分的理由将数据存储在 1000 列中。
-
@SpaceghostAli 这通常是个坏主意,不管这个问题的答案如何。顺便说一句,你还没有回答。
-
好的,我已经用新信息更新了您的问题(最好添加信息 - 这对回答问题很有用 - 在问题中而不是在 cmets 中。)并非所有人都会阅读所有的 cmets。
标签: sql sql-server tsql pivot