我有一张表格,其中每一列都是一个问题,行是可以假定值从1到4的答案
计算每个问题每个答案出现的最有效方法是什么?
输入表
q1 q2 q3
1 3 1
2 1 4
1 2 1
所需的输出表
answer q1 q2 q3
1 2 0 2
2 1 1 0
3 0 1 0
4 0 0 1
到目前为止,我到达以下问题(针对第3题),但这仅是一个问题
CREATE TABLE #t
(
answer int
)
insert into #t (answer) values (1)
insert into #t (answer) values (2)
insert into #t (answer) values (3)
insert into #t (answer) values (4)
select * into #q3 from (select q3 as q3,count(*) as occurenceq3
from [table]
group by q3) as x
select t.answer,tb.occurenceq3 as occurenceq3
from #t t left join #q3 tb on t.answer=tb.Q3
drop table #q3
drop table #t
最佳答案
select answer, q1, q2, q3
from
q
unpivot (answer for q in (q1, q2, q3)) as upvt
pivot (count(q) for q in (q1, q2, q3)) as pvt
我犯了先尝试使用
count(*)
的错误,但是我认为必须在要透视的列上显式地聚合,即使我认为它们在逻辑上是等效的。