我希望对以下 SQL 场景有所帮助
当前状态:
对于 med_id、casemgr_id、casemgr_clnt_id 的特定组合,应相应地反映状态:
期望输出:
在第一种情况下,对于 med_id=98410、casemgr_id=12345、casemgr_clnt_id=67891,日期(第 1 行)有效,但对于相同的行,如果日期在 6 个月内,则状态应为无效。在第二种情况下,对于 med_id=91956、casemgr_id=99012、casemgr_clnt_id=87567,日期(第 1 行)有效,但对于第二行,由于日期大于 6 个月,因此状态有效。总之,对于 med_id、casemgr_id 和 casemgr_clntid 的重复行,第一行的状态将有效,但对于后续行,如果日期 > 6 个月,则状态有效,否则如果少于 6 个月,则状态无效。
我如何在 SQL 中实现这一点?请帮忙!
可能是这样的
正如@Jan Suchanek 已经展示的那样,没有窗口函数就无法实现。
我的类似 - 它也使用
LAG()
,但它使用某种“锚点”FIRST_VALUE()
,使用MONTHS_BETWEEN()
于: