我仍然是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
非常感谢您的帮助。
答案 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;