我想获得一个SQL查询,它向我提供了已关闭服务请求的概述。这基于该服务请求的任务。 几个论坛不起作用:-(
我的表格:ServiceRequestTasks
SRNr | TaskNr | TaskDescr | TaskCreationDate | InfoRecDate
0001 | T00000 |开始_____ | 1/01/2018
0001 | T00001 | SD2C____ | 2/01/2018 _______ | 2019年4月1日
0001 | T00002 | D________ | 5/01/2019
0001 | T00003 | RAI______ | 6/01/2019 _______ | 12/01/2019
0001 | T00004 | SCR_____ | 15/01/2019
0001 | T00005 | RAI______ | 16/01/2019 ______ || 22/01/2019
0001 | T00006 | SCR_____ | 2019年1月28日
0001 | T00007 |结束______ | 2019年1月28日
0002 | T00008 |开始_____ | 2018年9月1日
0002 | T00009 | SCR_____ | 10/01/2018
0002 | T00010 | SD2C____ | 11/01/2018 _______ | 12/01/2019
0002 | T00011 | SCR_____ | 13/01/2019
0002 | T00012 |结束______ | 13/01/2018
0003 | T00013 |开始_____ | 14/01/2018
0003 | T00014 | SD2C____ | 15/01/2018 _______ | 16/01/2018
0004 | T00015 |开始_____ | 16/01/2018
0004 | T00016 | SCR_____ | 17/01/2018
0004 | T00017 | SCR_____ | 18/01/2018
0004 | T00018 | SD2C____ | 19/01/2018 _______ || 30/01/2019
0004 | T00019 | RAI______ | 1/02/2019 ________ || 2/02/2019
0004 | T00020 | SCR_____ | 2/02/2019
0004 | T00021 |结束______ | 2019年7月2日
TaskNr具有唯一的ID
仅在TaskDescr =(SD2C或RAI)并且SR关闭(SR包含任务描述“ End”)时才填写InfoRecDate。
预期输出:
是这样的:
SR号| “最新” InfoRecDate |结束日期
1 | 22/01/2019 | 2019年1月28日
2 | 12/01/2019 | 2018年1月13日
4 | 02/02/2019 | 2019年7月2日
答案 0 :(得分:0)
将要求分解为两部分:
对于第2部分,我将使用子查询:
select
SRNr,
(select top 1 InfoRecDate from ServiceRequestTasks t2
where t1.SRNr = t2.SRNr and InfoRecDate is not null
order by InfoRecDate desc) as InfoDate,
TaskCreationDate
from ServiceRequestTasks t1
where TaskDescr = 'End'
我没有验证这是否可行,但这是一个相当简单的查询-除非我错过了您的要求。
答案 1 :(得分:0)
只需使用条件聚合:
select SRNr,
max(InfoRecDate) as latest_InfoRecDate,
max(iif(TaskDescr = "End", TaskCreationDate, NULL)) as end_date
from t
group by SRNr
having sum(iif(TaskDescr = "End", 1, 0)) > 0;