[英]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.