SQL中基于查询结果的匹配模式

时间:2018-11-26 00:51:32

标签: sql-server tsql

我有一个SQL查询,该查询返回三列联系ID,参与人数,参与年份。

根据此查询结果,我需要寻找是否有人多年来参加过一定次数(每年相同次数)的模式。

例如,连续2年或更长时间(每年两次,每年两次)或每年连续3次(每年次数相同)。

从下面的示例中,我希望拉动的联系人为1008637、1009256、1010306和1011263

请让我知道如何实现这一目标。

请参阅图片以获取示例数据。

enter image description here

1 个答案:

答案 0 :(得分:0)

您需要两次汇总。一次获取参与人数,然后检查每年的参与人数条件。

select id
from (select id,year,count(*) as num_participations
      from tbl
      group by id,year
     ) t 
group by id 
having count(*) = count(distinct case when num_participations = 2 then year end)