有没有一种解决方案来生成一个矩阵,就像下面在SQL中提出的那样?
下面的表格显示了100名学生参加了猫学习模块,其中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 server上有一个数据仓库,我们可以将其加载到其中。
发布于 2016-01-12 21:51:12
使用GROUP BY执行self JOIN,并使用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.modulehttps://stackoverflow.com/questions/34744977
复制相似问题