[英]t-sql complex query to get only maximum status with 'R'
我想獲取僅具有“ 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
如果您希望索賠狀態僅具有'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)
我對要查找的數據有些困惑,但是也許是這樣的:
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。
編輯:按字段更改順序,並刪除最大值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.