用于转置数据的SQL数据透视表

时间:2014-03-17 13:18:29

标签: sql sql-server pivot

我无法绕过如何使用pivot(或者其他一些解决方案)来转换数据。我不必担心聚合任何信息,我只想转置行和列。

我有一张表,其中每条记录都存储了一系列问题的答案。结构看起来像这样,所有问题都是是/否位:

(pk)ID, q1, q2, q3, q4, q5....

我想采取像

这样的查询
select ID, q1, q2, q3, q4, q5               
from mytable          
where myconditions

转置它以便我得到

ID 1 2 3 4
q1 1 1 0 1
q2 1 0 0 1
q3 0 0 1 1
q4 1 1 1 1
q5 0 0 1 0

1 个答案:

答案 0 :(得分:1)

试试这个

SELECT *
From
(
  select id, col, value
  from mytable
  unpivot
  (
    value
    for col in (q1, q2, q3, q4, q5)
  ) unpiv
) src
pivot
(
  min(value)  
 for ID in ([1],[2],[3],[4])
) piv

Fiddle Demo

<强>运算:

COL 1   2   3   4
q1  1   1   0   1
q2  1   0   0   1
q3  0   0   1   1
q4  1   1   1   1
q5  0   0   1   0