下面的資料集顯示了一條經歷了若干狀態的 "審查 "記錄的審計線索。
caseauditid caseid casetypename auditcasestatusname auditcasesubstatusname
1140 1 Open 市場同行評審All 檔案可用
1141 1 Open 市場同行審查審查完成
883 41 Open 市場同行評審復核清單評審
1051 41 Open 市場同行評審檢查表評審
1052 41 Open 市場同行評審復核清單完成
1053 41 Open 市場同行評審檢查 All 檔案可用
1054 41 Open 市場同行評審 All 可用檔案
1055 41 Open 市場同行評審轉介請求
我想實作的是只顯示auditcasesubstatusname為('檢查表完成'、'所有檔案可用'、'審查完成')之一且沒有('缺失檔案無行動'、'需要缺失檔案行動'、'轉介請求')數值的案件id
。在這個例子中,案件編號1將被回傳,但由于案件編號41的值是 "轉介請求",所以它不會被回傳
。現在有一個真正的代碼塊,所以不確定如何在SQL Server中最好地實作這一點。有什么想法嗎?
謝謝
uj5u.com熱心網友回復:
要在組內過濾一個子集的值,你可以使用group by having子句
select distinct dbo.caseid
from dbo.vw_caseaudit
group by dbo.caseid
having sum(dbo. auditcasesubstatusname in ('Missing Document No Action', 'Missing Document Action Required', 'Referral Request') = 0 and
sum(dbo.audcasesubstatusname in ('Checklist Complete', 'All documents Available', 'Review Complete') > 0)
uj5u.com熱心網友回復:
你可以使用一個條件案例運算式:
with v as (
select * ,
Sum(case when auditcasesubstatusname not in ('Checklist Complete', '所有檔案可用', '審查完成') then 1 else 0 end)
over(partition by caseid) invalid
from t
)
select *
from v
where invalid=0
uj5u.com熱心網友回復:
我想你可以試試這個:
select distinct caseid from Table1
where auditcasesubstatusname in('Checklist Complete', 'All Documents Available', 'Review Complete')
and caseid not in(
select distinct caseid from Table1
where auditcasesubstatusname in('Missing Document No Action', 'Missing Document Action Required', 'Referral Request') )
uj5u.com熱心網友回復:
如果我正確理解你的問題,你是否嘗試使用
in來表示 auditcasesubstatusname? 類似于sql查詢中的auditcasesubstatusname in (List of possible values)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/332042.html
標籤:
