首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL:生成一个矩阵以显示不同值组合的计数

SQL:生成一个矩阵以显示不同值组合的计数
EN

Stack Overflow用户
提问于 2016-01-12 21:27:10
回答 1查看 42关注 0票数 1

有没有一种解决方案来生成一个矩阵,就像下面在SQL中提出的那样?

下面的表格显示了100名学生参加了猫学习模块,其中52名学生同时参加了狗研究和猫研究,但只有3名学生同时参加了猫研究和沙鼠研究。诸若此类。

代码语言:javascript
复制
Modules         Cat Studies  Dog Studies  Gerbil Studies
Cat Studies       100             52            3
Dog Studies       52              75            45
Gerbil Studies    3               45            60

输入数据将为

代码语言:javascript
复制
module             personCode
Cat Studies        1345
Cat Studies        1234
Gerbil Studies     5634
Dog Studies        9878
Gerbil Studies     5643
Dog Studies        7362

这个源数据库是Oracle,但我们在SQL server上有一个数据仓库,我们可以将其加载到其中。

EN

回答 1

Stack Overflow用户

发布于 2016-01-12 21:51:12

使用GROUP BY执行self JOIN,并使用CASE表达式进行条件计数:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34744977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档