第一次发帖,但多年来我偶然发现了stackoverflow。
一个病人可能会在几个月内多次接受特定的实验室检查。但是,为了减少重复,我只想每45天捕获一次这些结果。所以如果一个病人今天做了化验,我可以忽略接下来45天的化验。但是如果一个病人在第51天进行了重复的实验室测试,我想重新设置“时钟”,忽略接下来45天的实验室测试。
下面是我想做的:
PatientID Date DayNum KeepThis? DaysSinceLastKeptTest
1 3/2/2020 0 Yes 0
1 3/5/2020 3 3
1 4/6/2020 35 35
1 4/10/2020 39 39
1 5/15/2020 74 Yes 0 (more than 45 days since 3/2 test)
1 5/25/2020 84 10
1 5/30/2020 89 15
1 6/6/2020 96 22
1 7/1/2020 121 Yes 0 (more than 45 days since 5/15 test)
1 7/4/2020 124 3
1 7/15/2020 135 14
(在我的最终产品中,我不一定需要daynum、keepthis或dayssincelastkepttest列。我只需要3行“是”。)
我试着用sql来做这个,但是搞不懂。我已经考虑过临时表或子查询,我只是在学习over/partitionby作为一种可能的解决方法。
我很感激你的帮助和建议。谢谢!
1条答案
按热度按时间11dmarpk1#
使用递归cte,您可以: