如何按2列取消透视sql表[重复]
Posted
技术标签:
【中文标题】如何按2列取消透视sql表[重复]【英文标题】:How to unpivot sql table by 2 colums [duplicate] 【发布时间】:2014-06-12 22:46:51 【问题描述】:我有一行数据(姓名、地址、question_ID_1、Answer_1、question_ID_2、Answer_2 等),并希望将其还原为:
row1: name, address, question_ID_1, Answer_1;
row2: name, address, question_ID_2, Answer_2;
row3: name, address, question_ID_3, Answer 3; etc.
我已经设法得到了这个变化,但不是最终结果。我已经连接了问题和答案字段,并且不介意使用它进行反透视- 所以...
row1: name, address, QA1;
row2: name, address, QA2;
row3: name, address, QA3 etc.
我也有可变数量的列,具体取决于导入。
我正在将平面文件(使用 SSIS)导入 SQLServer 2005 表,然后使用存储过程将数据转换为所选格式。您可以提供的任何代码都会有很大帮助。
【问题讨论】:
【参考方案1】:您可以使用 UNPIVOT 将列转换为行。
SELECT name, address, question, answer
FROM questions
UNPIVOT
(question for q in (question_ID_1, question_ID_2)) as q
UNPIVOT
(answer for a in (answer_1, answer_2)) as a
WHERE RIGHT(q,1) = RIGHT(a,1)
这里有一个 SqlFiddle 来展示这个:http://sqlfiddle.com/#!3/e6919/3
【讨论】:
以上是关于如何按2列取消透视sql表[重复]的主要内容,如果未能解决你的问题,请参考以下文章