我想获得状态类型仅为“R”的最大声明状态版本,如果其他状态具有相同的声明ID,我想过滤那些。
以下查询未向我提供所需结果。
select p.prov_clm_id,p.prov_clm_stat_type,max(p.clm_stat_version)
from provider_clm_stat p
WHERE p.provider_clm_stat_type='R'
GROUP BY p.prov_clm_id,p.provider_claim_status_type
194 R 1
231 R 1
469 R 1
649 R 1
如果还有其他声明状态,我不想在结果中显示。
select * from provider_clm_stat where prov_clm_id=194
194 5 B
194 2 K
194 3 G
194 4 Q
194 7 H
194 8 P
194 1 R
194 6 X
Required results:
740 R 1
答案 0 :(得分:0)
如果您希望声明状态仅包含'R'
且没有其他状态:
select p.prov_clm_id, p.prov_clm_stat_type, max(p.clm_stat_version)
from provider_clm_stat p
GROUP BY p.prov_clm_id, p.provider_claim_status_type
having max(p.provider_clm_stat_type) = 'R' and
min(p.provider_clm_stat_type) = 'R';
此处的过滤位于聚合后的having
子句中。如果min()
和max()
值均为'R'
,则所有值均为'R'
或NULL
。如果NULL
是可能的,并且您想要将其过滤掉,请使用以下句子:
having max(p.provider_clm_stat_type) = 'R' and
min(p.provider_clm_stat_type) = 'R' and
count(*) = count(p.provider_clm_stat_type)
答案 1 :(得分:0)
我对你正在寻找的数据感到有些困惑,但也许是这样的:
select TOP 1 p.prov_clm_id,p.prov_clm_stat_type, p.clm_stat_version
from provider_clm_stat p
WHERE p.provider_clm_stat_type='R'
ORDER BY p.clm_stat_version desc
据我所知,小组对你没有任何帮助,因为你在分组中有Id。
已编辑:按字段更改了顺序并删除了最大值