是否有生成矩阵的解决方案,例如下面SQL中提出的矩阵?
下表显示了100名参加Cat研究课程的学生,其中52人参加了狗研究和猫研究,但只有3人参加了猫研究和沙鼠研究。等等。
Modules Cat Studies Dog Studies Gerbil Studies
Cat Studies 100 52 3
Dog Studies 52 75 45
Gerbil Studies 3 45 60
输入数据为
module personCode
Cat Studies 1345
Cat Studies 1234
Gerbil Studies 5634
Dog Studies 9878
Gerbil Studies 5643
Dog Studies 7362
这个源数据库是Oracle,但我们在SQL服务器上有一个数据仓库,我们可以加载它。
答案 0 :(得分:1)
使用JOIN
自我GROUP BY
并使用CASE
表达式进行条件计数:
select t1.module,
sum(case when t2.module = 'Cat Studies' then 1 end) as "Cat Studies",
sum(case when t2.module = 'Dog Studies' then 1 end) as "Dog Studies",
sum(case when t2.module = 'Gerbil Studies' then 1 end) as "Gerbil Studies"
from tablename t1
join tablename t2 on t1.personCode = t2.personCode
group by t1.module