我如何为这个数据集实现ROW_NUMBER() PARTITION BY()
来获得这些结果?我只是想看看一个人目前注册的当前程序。
代码:
SELECT
PERSON_ID,
PROGRAM_JOINED,
EFFECTIVE DATE,
PROGRAM_FINISHED_FLAG
FROM PROGRAM_DATE_TRACK
字符串
日期追踪
| 个人ID|联系我们|截止日期|装饰_完成_标志|
| --|--|--|--|
| 1 |芭蕾|2023年8月1日|N|
| 1 |绘画|2023年8月1日|N|
| 1 |陶瓷|2023年5月30日|Y|
| 2 |图形绘制|2023年8月1日|N|
| 2 |芭蕾|2023年5月30日|Y|
| 2 |芭蕾|2022年8月1日|N|
| 3 |抽头|2023年8月1日|N|
| 3 |针织|2021年1月1日|Y|
我需要看到的是:
| 个人ID|联系我们|截止日期|装饰_完成_标志|
| --|--|--|--|
| 1 |芭蕾|2023年8月1日|N|
| 1 |绘画|2023年8月1日|N|
| 2 |图形绘制|2023年8月1日|N|
| 3 |抽头|2023年8月1日|N|
我试过这个,但它包括已经结束的节目日期。例如,第二个人在2022年8月1日开始芭蕾舞,但在2023年5月30日结束。
SELECT
PERSON_ID,
PROGRAM_JOINED,
EFFECTIVE DATE,
PROGRAM_FINISHED_FLAG
ROW_NUMBER() OVER (PARTITION BY PERSON_ID, PROGRAM_JOINED ORDER BY EFFECTIVE DATEE DESC) AS RANK
FROM PROGRAM_DATE_TRACK
WHERE PROGRAM_FINISHED_FLAG = 'N'
型
结果如下:
| 个人ID|联系我们|截止日期|装饰_完成_标志|秩|
| --|--|--|--|--|
| 1 |芭蕾|2023年8月1日|N| 1 |
| 1 |绘画|2023年8月1日|N| 1 |
| 2 |图形绘制|2023年8月1日|N| 1 |
| 2 |芭蕾|2022年8月1日|N| 1 |
| 3 |抽头|2023年8月1日|N| 1 |
2条答案
按热度按时间nkkqxpd91#
你可以做
字符串
测试结果:
型
请参见db<>fiddle上的运行示例。
vaj7vani2#
您也可以尝试使用
max
字符串