SQL Server在分区内查找结果
我有下表:SQL Server在分区内查找结果,sql,sql-server,count,ssms,sql-null,Sql,Sql Server,Count,Ssms,Sql Null,我有下表: ID Date ------------------- 1 Null 1 1/2/2020 2 Null 2 12/2/2020 3 Null 对于每个至少有一个非空日期的ID,我需要分类为“accounted” 结果集应如下所示: id Date AccountFlag ---------------------------- 1 Null Accounted 1 1/2/2020
ID Date
-------------------
1 Null
1 1/2/2020
2 Null
2 12/2/2020
3 Null
对于每个至少有一个非空日期的ID,我需要分类为“accounted”
结果集应如下所示:
id Date AccountFlag
----------------------------
1 Null Accounted
1 1/2/2020 Accounted
2 Null Accounted
2 12/2/2020 Accounted
3 Null Unaccounted
可以使用窗口函数检查同一id是否至少有一个非空日期,并使用大小写表达式相应地设置标志。窗口聚合函数在这方面很方便:
select id, date,
case when max(date) over(partition by id) is not null
then 'Accounted'
ese 'Unaccounted'
end as accountflag
from mytable
max忽略null值,因此当且仅当分区中的所有值都为null时,它才会返回null。这对min也同样有效