gpt4 book ai didi

sql - 如何找到最近更改的行?

转载 作者:行者123 更新时间:2023-12-02 09:34:15 25 4
gpt4 key购买 nike

我有一个包含审计相关记录的表。有一个列存储批准状态,值为“N”和“Y”。我必须找到最近从批准状态“Y”更改为“N”的记录。

示例数据:

Request_No    approve_status request_create_date          audit_no_in
22866 N 2016-06-21 11:47:12.7530000 1016
22866 N 2016-06-21 11:46:52.3660000 1015
22866 Y 2016-06-21 11:46:13.9290000 1014
22866 Y 2016-06-21 11:45:14.3200000 1013
22866 N 2016-06-21 11:37:27.9410000 1012
22866 Y 2016-06-21 11:37:03.4510000 1011
22866 N 2016-06-21 11:32:29.6310000 1010
22866 Y 2016-06-21 11:31:41.0270000 1009
22866 N 2016-06-20 19:17:30.4820000 1008
22866 N 2016-06-20 19:14:30.4720000 1007
22866 Y 2016-06-02 13:12:53.5170000 1006

所需输出:

Request_No    approve_status request_create_date          audit_no_in
22866 N 2016-06-21 11:46:52.3660000 1015

任何帮助将不胜感激。

最佳答案

您可以使用LEAD()ROW_NUMBER()一起:

SELECT p.request_no,p.approve_status,p.request_create_date,p.audit_no_in
FROM(
SELECT s.*,
ROW_NUMBER() OVER(PARTITION BY s.request_no ORDER BY s.request_create_date DESC) as rnk
FROM (
SELECT t.*,
LEAD(t.approve_status,1,0) OVER(PARTITION BY t.request_no ORDER BY t.request_create_date DESC) as last_status
FROM YourTable t) s
WHERE s.approve_status = 'Y' AND s.last_status = 'N') p
WHERE p.rnk = 1

第一个内部查询选择最后一个状态,第二个内部查询过滤那些没有从 Y 更改为 N 的查询,并根据日期对它们进行排名,第三个内部查询仅过滤最新的更改。

关于sql - 如何找到最近更改的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37937799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com