首页 > 解决方案 > 如何创建数据透视表以显示另一列值之间共享值的数量?

问题描述

假设我有下表:

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

谢谢 !

标签: sqlsql-serverpivot

解决方案


在 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;

推荐阅读