首页 > 解决方案 > 列出组合和它们在 SQL 中重复的次数

问题描述

我什至不确定如何描述这个问题,通常我有一个小表(在 SQL Server 2019 中)有 2 列,没有很多数据,它看起来像这样

MechanicID       CarID
----------------------
1                   2
1                   3
2                   1
2                   3
4                   1
4                   2
4                   3

现在的想法是(最好使用 SELECT,如果 SELECT 不可能,可能是存储过程?)检查某种汽车组合发生了多少次。

基本上,它列出了一起维修的汽车组合以及维修这些组合的机械师数量。只有那些存在的组合才会出现。

结果应该是:

Car combination        Number of occurrences
---------------------------------------------
1&2                    1
1&3                    2
2&3                    2

所以机械师 1 维修了汽车 2&3,这个组合也被机械师 4 维修了,所以出现的次数是 2。

帮助将不胜感激

标签: sqlsql-server

解决方案


使用自联接和聚合:

select t1.carid, t2.carid, count(*)
from t t1 join
     t t2
     on t1.MechanicID = t2.MechanicID and
        t1.carid < t2.carid
group by t1.carid, t2.carid

推荐阅读