【发布时间】:2014-04-08 19:07:17
【问题描述】:
我有一个动态生成的表,我需要将所有列更改为行
所以我的桌子看起来像这样
Conv1 | Conv2 | ...
data1 | data2 | ...
data1 | data2 | ...
data1 | data2 | ...
... | ... | ...
因为它是动态的,所以如果不运行 Select count(*) 或类似的东西,我不知道有多少行/列。
基本上我想把上表改成这个
data1 | data1 | data1 | ...
data2 | data2 | data2 | ...
data3 | data3 | data3 | ...
data4 | data4 | data4 | ...
我曾考虑使用Pivot,但我不确定在这种情况下我将如何使用它。
我正在使用 SQL Server 2008 R2
任何帮助将不胜感激。如果您需要更多信息,请告诉我。
谢谢。
--更新
这是当前的表结构,其中“Conv”项作为列名。
Conv1 | Conv2 | Conv3 | ...
data1 | data2 | data3 | ...
data1 | data2 | data3 | ...
data1 | data2 | data3 | ...
... | ... | ... | ...
“数据”片段在哪里varchar(250)
将数据视为对话存储库 (Conv1),行是一系列问题和响应。 由于我必须处理的内容的性质,我不知道哪些“数据”内容是问题,哪些是响应。
这就是我想要的结果:
Col1 | Col2 | Col3 | ...
Conv1 | data1 | data1 | data1 | ...
Conv2 | data2 | data2 | data2 | ...
Conv3 | data3 | data3 | data3 | ...
Conv4 | data4 | data4 | data4 | ...
如果这些信息还不够,请告诉我,我会看看还能提供什么。
【问题讨论】:
-
这是执行动态数据透视的方法:stackoverflow.com/a/11985946/3503205
-
我不明白我会用什么来代替@Ryx5 评论中的
min(choice)或@lyosha 评论中的max(val)。或者真的就此而言,Pivot部分会是什么。在所有示例中,我看到原始表中包含具有特定内容的列,在我的情况下,这些列包含基本上几乎相同类型的数据,它们没有真正的区别特征。 -
我会假设使用
Pivot不是答案,因为我认为我真的没有任何可以“聚合”的东西,据我慢慢理解,这对于@ 来说是必要的987654335@上班。还有其他方法可以将列转置为行吗? -
我想我只是将内容转储到 Excel 文件中并使用它的“转置”功能。
标签: sql sql-server pivot