sql - 如何创建数据透视表以显示另一列值之间共享值的数量?
问题描述
假设我有下表:
id test
A test_1
B test_1
A test_2
C test_3
D test_4
如何创建数据透视表来显示每两个测试之间相似 ID 的数量。比如下图:
test_1 test_2 test_3 test_4
test_1 2 1
test_2 1
test_3 1
test_4 1
谢谢 !
解决方案
在 SQL 中,您将以不同的格式创建表,每对存在一行:
select t1.test, t2.test, count(t2.id)
from t1 join
t2
on t1.test = t2.test
group by t1.id, t2.id;
您可以通过以下方式进行调整:
select t1.test,
sum(case when t2.test = 'test_1' then 1 else 0 end) as test_1,
sum(case when t2.test = 'test_2' then 1 else 0 end) as test_2,
sum(case when t2.test = 'test_4' then 1 else 0 end) as test_3,
sum(case when t2.test = 'test_4' then 1 else 0 end) as test_4
from t1 left join
t2
on t1.id= t2.id
group by t1.test;
推荐阅读
- sitefinity - 在页面上放置 Sitefinity 内容块
- jess - JESS 引擎的网页不可用
- windows - Set-Location 是否看到“遍历/执行”NTFS 权限?
- javascript - 通过javascript中的if语句向数组添加值
- woocommerce - Woocommerce:删除 function.php 中的“添加到购物车”按钮
- java - 如何单击 Selenium 中的嵌套链接
- c++ - 使用 cin 和 cout 时字符变量未正确打印
- bash - 我想使用 unix shell 脚本在不使用 echo 函数的情况下反转一个单词
- python - 使 3-d numpy 数组的每个第 n 个切片连续
- keycloak - 从 SysoutEventListenerProvider [keycloak] 获取用户的属性