需要一些有关解决问题的帮助。
下面是我的输入数据。在这里,我根据名称字段进行分组。下面给出了我目前用于分组的查询。
select name from Table
group by name having count(distinct DOB)='1'
但是问题是如果组中的所有记录的DOB字段为空,则上面的查询不会影响记录。如果我尝试为DOB字段提供一些虚拟值,那么它将无法获取前两行的结果,如果我不给出虚拟值,将不会影响3和4中的记录
我尝试了类似的方法,但这是错误的
select name from Table
group by name having count(distinct case when DOB is null then '9999-01-01' else DOB END)='1'
有人可以在这里提供一些建议吗?我的预期结果如下。
答案 0 :(得分:0)
您可以将逻辑替换为:
having min(dob) = max(dob) or
min(dob) is null
根据您的数据,count(distinct)
可能相对昂贵,因此实际上比使用它便宜。
您可以使用count(distinct)
。只需更改比较值即可:
having count(distinct dob) <= 1