SQL:基于另一列中的重复值查询一列

时间:2019-03-20 16:33:31

标签: sql

我仍然是SQL的入门者,这个问题对我来说是个难题。

我有一个名为NAMES的表,该表具有NAME_ID,ALIAS_ID和DOD列(DOD =死亡日期)。 NAME_ID是唯一ID,而ALIAS_ID如果是NAME的别名,则使用NAME_ID填充。

我需要查询和计算name_id具有多个关联的别名且DOD不为null的所有alias_id。

NAME_ID     ALIAS_ID      DOD
4434        0             NULL
4444        0             4/5/2000    
58777       0             2/15/1993
58778       4444          4/5/2000
58779       58777         2/15/1993
58780       4444          4/5/2000
58781       58777         2/15/1993

请注意,有一个具有两个别名的NAME_ID = 4444,其名称为NAME_ID = 58778,58780。也有一个NAME_ID = 58777,其别名为NAME_ID = 58779,58781。这些记录的DOB不为空。这些是我需要查询的记录,因为只能有一个DOD链接到所有NAME_ID(alias_id不应该具有DOD)。我正在寻找类似的结果:

NAME_ID    #OFALIASWITHDOD 
4444       2
58777      2

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

如果我正确理解了这个问题,那么您想要的查询是:

select nn.name_id, count(*) as num_aliases
from names n join
     names nn
     on n.alias_id = nn.name_id
where nn.dod is not null
group by nn.name_id;