我在SQL Server中有以下表格:
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选择最新的consult_date并生成提醒。这里最新的consult_date是2021-10-30,但问题是咨询已经被取消了,因为咨询成本在这里是负的。
我想忽略这一记录,也忽略consult_date 2021-05-30,因为consultation_cost (10)类似于负咨询成本(-10),该成本已被取消。因此,最新的咨询日期应该是2021-02-08。
解决办法应该是找到最大的咨询日期。如果成本为正,则将其作为最大咨询日期。如果它是否定的,则忽略该记录,忽略相同患者记录的正值的类似成本,并采用下一个最大咨询日期。
发布于 2021-11-19 09:30:40
您可以按consult_date的降序使用SUM over partition by patient_id,然后找到具有正值的最大日期。
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输出:
patient_id consult_date
----------- ------------
1 2021-02-08https://stackoverflow.com/questions/70032432
复制相似问题