簡體   English   中英

根據條件忽略 SQL 服務器中的多條記錄並產生結果

[英]Neglect multiple records in SQL Server based on condition and produce result

我在 SQL 服務器中有下表:

consult_date patient_id consultation_cost
-----------------------------------------
2021-10-30    1           -10
2021-05-30    1            10
2021-02-08    1            20
2021-01-27    1            22

我想為患者 1 提供 select 最新的咨詢日期並生成提醒。 這里最新的咨詢日期是 2021-10-30 但問題是咨詢已被取消,因為這里的咨詢成本為負。

我想忽略這條記錄,也忽略consult_date 2021-05-30,因為consult_cost(10)類似於已取消的負咨詢成本(-10)。 所以最新的咨詢日期應該是2021-02-08。

解決方案應該是找到最長的咨詢日期。 如果成本為正,則將其作為最長咨詢日期。 如果它是負數,則忽略該記錄並忽略同一患者記錄的正值的相似成本,並采用下一個最大咨詢日期。

您可以按 [patient_id] 按 [consult_date] 降序對分區使用 SUM,然后找到具有正值的最大日期。

Select patient_id, Max(consult_date) As consult_date
From (
Select consult_date, patient_id, SUM(consultation_cost) Over (Partition by patient_id Order by consult_date Desc) As Agg
From Tbl) As T
Where Agg>0
Group by patient_id

Output:

patient_id  consult_date
----------- ------------
1           2021-02-08

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM