Sql 请求\u键入('CREATE','UPDATE'),状态='NEW',然后执行操作\u dt END) 忽略空值(按操作不按顺序分区) 否则无效 以start_dt结尾, 案例 当请求\输入('CREATE','UPDATE'),状态为('NEW','APPROVED')时 然后行动 当请求\输入('CREATE','UPDATE'),状态='PENDING' 然后领导(当请求输入('CREATE','UPDATE'),状态为'APPROVED',然后行动结束时) 忽略空值(按操作不按顺序分区) 否则无效 结束为结束 从w

Sql 请求\u键入('CREATE','UPDATE'),状态='NEW',然后执行操作\u dt END) 忽略空值(按操作不按顺序分区) 否则无效 以start_dt结尾, 案例 当请求\输入('CREATE','UPDATE'),状态为('NEW','APPROVED')时 然后行动 当请求\输入('CREATE','UPDATE'),状态='PENDING' 然后领导(当请求输入('CREATE','UPDATE'),状态为'APPROVED',然后行动结束时) 忽略空值(按操作不按顺序分区) 否则无效 结束为结束 从w,sql,oracle,case,lead,Sql,Oracle,Case,Lead,输出: 无|动作|请求|类型|状态|开始|结束| -: | :------------------ | :----------- | :------- | :------------------ | :------------------ 1 | 2008-05-06 22:55:11 |创建|批准| 2008-05-06 22:55:11 | 2008-05-06 22:55:11 1 | 2013-01-03 09:52:01 |更新|批准| 2013-01-03 09:52:01 | 20

输出

无|动作|请求|类型|状态|开始|结束| -: | :------------------ | :----------- | :------- | :------------------ | :------------------ 1 | 2008-05-06 22:55:11 |创建|批准| 2008-05-06 22:55:11 | 2008-05-06 22:55:11 1 | 2013-01-03 09:52:01 |更新|批准| 2013-01-03 09:52:01 | 2013-01-03 09:52:01 1 | 2013-01-03 09:57:26 |更新|批准| 2013-01-03 09:57:26 | 2013-01-03 09:57:26 | 1 | 2015-04-21 14:19:04 |更新|批准| 2015-04-21 14:19:04 | 2015-04-21 14:19:04 1 | 2016-10-27 10:40:19 |更新|批准| 2016-10-27 10:40:19 | 2016-10-27 10:40:19 | 1 | 2018-02-19 16:18:18 |更新|批准| 2018-02-19 16:18:18 | 2018-02-19 16:18:18 1 | 2018-11-13 16:13:38 |更新|新| 2018-11-13 16:13:38 | 2018-11-13 16:13:38 1 | 2018-11-15 09:44:55 |更新|批准| 2018-11-15 09:44:55 | 2018-11-15 09:44:55 1 | 2019-07-17 14:21:52 |更新|待定| 2018-11-13 16:13:38 | 2019-07-17 14:47:31 1 | 2019-07-17 14:21:52 |更新|新| 2019-07-17 14:21:52 | 2019-07-17 14:21:52 | 1 | 2019-07-17 14:47:31 |更新|批准| 2019-07-17 14:47:31 | 2019-07-17 14:47:31
dbfiddle

这里似乎没有问题。请编辑并更改它,以便您提出问题。你需要帮助做什么?(您是否收到错误?它是否按照您希望/预期的方式工作?其他?)@Boneist问题已更新。您预期的输出是什么?第7行、第9行和第10行应该有什么日期?@MT0添加了额外的预期结果表。对于第7行、第9行和第10行,我可以想象在我的情况下使用超前/滞后,但会出现错误。这是在我发布的sql中。这里似乎没有问题。请编辑并更改它,以便您提出问题。你需要帮助做什么?(您是否收到错误?它是否按照您希望/预期的方式工作?其他?)@Boneist问题已更新。您预期的输出是什么?第7行、第9行和第10行应该有什么日期?@MT0添加了额外的预期结果表。对于第7行、第9行和第10行,我可以想象在我的情况下使用超前/滞后,但会出现错误。这是在我发布的sql中。
No    action_dt              type    status
1      5/6/2008 10:55:11 PM  CREATE  APPROVED
1      1/3/2013 9:52:01 AM   UPDATE  APPROVED
1      1/3/2013 9:57:26 AM   UPDATE  APPROVED
1      4/21/2015 2:19:04 PM  UPDATE  APPROVED
1    10/27/2016 10:40:19 AM  UPDATE  APPROVED
1    2/19/2018 4:18:18 PM    UPDATE  APPROVED
1    11/13/2018 4:13:38 PM   UPDATE  NEW
1    11/15/2018 9:44:55 AM   UPDATE  APPROVED
1    7/17/2019 2:21:52 PM    UPDATE  PENDING
1    7/17/2019 2:21:52 PM    UPDATE  NEW
1   7/17/2019 2:47:31 PM     UPDATE  APPROVED
No  Action_dt              type     status   start_dt               End_dt
1   5/6/2008 10:55:11 PM   CREATE   APPROVED 5/6/2008 10:55:11 PM   5/6/2008 10:55:11 PM
1   1/3/2013 9:52:01 AM    UPDATE   APPROVED 1/3/2013 9:52:01 AM    1/3/2013 9:52:01 AM
1   1/3/2013 9:57:26 AM    UPDATE   APPROVED 1/3/2013 9:57:26 AM    1/3/2013 9:57:26 AM
1   4/21/2015 2:19:04 PM   UPDATE   APPROVED 4/21/2015 2:19:04 PM   4/21/2015 2:19:04 PM
1   10/27/2016 10:40:19 AM UPDATE   APPROVED 10/27/2016 10:40:19 AM 10/27/2016 10:40:19 AM
1   2/19/2018 4:18:18 PM   UPDATE   APPROVED 2/19/2018 4:18:18 PM   2/19/2018 4:18:18 PM
1   11/13/2018 4:13:38 PM   UPDATE  NEW      11/13/2018 4:13:38 PM  
1   11/15/2018 9:44:55 AM   UPDATE  APPROVED 11/15/2018 9:44:55 AM  11/15/2018 9:44:55 AM
1   7/17/2019 2:21:52 PM    UPDATE  PENDING     
1   7/17/2019 2:21:52 PM    UPDATE  NEW      7/17/2019 2:21:52 PM   
1   7/17/2019 2:47:31 PM    UPDATE  APPROVED 7/17/2019 2:47:31 PM   7/17/2019 2:47:31 PM
       Start_dt                   End_dt
row 7                             11/15/2018 9:44:55 AM
row 9  11/13/2018 4:13:38 PM       7/17/2019 2:47:31 PM
row 10                            7/17/2019 2:47:31 PM
select *
,CASE
--WHEN W.REQUEST_TYPE IN ('CREATE','UPDATE') AND W.STATUS_CD IN ('APPROVED','DENIED') THEN W.ACTION_DT
WHEN W.REQUEST_TYPE IN ('CREATE','UPDATE') AND W.STATUS_CD IN ('NEW','APPROVED')  THEN W.ACTION_DT
--WHEN W.REQUEST_TYPE IN ('CREATE','UPDATE') AND W.STATUS_CD IN ('PENDING')  THEN W.ACTION_DT
ELSE NULL
END REQUEST_START_DT

,CASE
WHEN W.REQUEST_TYPE IN ('CREATE','UPDATE') AND W.STATUS_CD IN ('APPROVED','DENIED') THEN W.ACTION_DT
--WHEN W.REQUEST_TYPE IN ('CREATE','UPDATE') AND W.STATUS_CD IN ('PENDING') THEN LEAD((W.ACTION_DT) KEEP (DENSE_RANK ORDER BY W.STATUS_CD) OVER (PARTITION BY ORG_NO) end)
ELSE NULL
END REQUEST_END_DT
FROM APEXIM.CRD_ORG_WORK W
WHERE 1=1
AND W.NO = 1
from W
NO | ACTION_DT | REQUEST_TYPE | STATUS | START_DT | END_DT -: | :------------------ | :----------- | :------- | :------------------ | :------------------ 1 | 2008-05-06 22:55:11 | CREATE | APPROVED | 2008-05-06 22:55:11 | 2008-05-06 22:55:11 1 | 2013-01-03 09:52:01 | UPDATE | APPROVED | 2013-01-03 09:52:01 | 2013-01-03 09:52:01 1 | 2013-01-03 09:57:26 | UPDATE | APPROVED | 2013-01-03 09:57:26 | 2013-01-03 09:57:26 1 | 2015-04-21 14:19:04 | UPDATE | APPROVED | 2015-04-21 14:19:04 | 2015-04-21 14:19:04 1 | 2016-10-27 10:40:19 | UPDATE | APPROVED | 2016-10-27 10:40:19 | 2016-10-27 10:40:19 1 | 2018-02-19 16:18:18 | UPDATE | APPROVED | 2018-02-19 16:18:18 | 2018-02-19 16:18:18 1 | 2018-11-13 16:13:38 | UPDATE | NEW | 2018-11-13 16:13:38 | 2018-11-13 16:13:38 1 | 2018-11-15 09:44:55 | UPDATE | APPROVED | 2018-11-15 09:44:55 | 2018-11-15 09:44:55 1 | 2019-07-17 14:21:52 | UPDATE | PENDING | 2018-11-13 16:13:38 | 2019-07-17 14:47:31 1 | 2019-07-17 14:21:52 | UPDATE | NEW | 2019-07-17 14:21:52 | 2019-07-17 14:21:52 1 | 2019-07-17 14:47:31 | UPDATE | APPROVED | 2019-07-17 14:47:31 | 2019-07-17 14:47:31