У меня есть таблица со столбцами DateTime, JobID, TaskID
DateTime JobID TaskID
2020-05-16 06:43:11.687 353 NULL
2020-05-16 06:45:11.687 353 123
2020-05-16 06:43:11.687 353 123
2020-05-16 06:43:12.297 353 456
2020-05-16 06:44:30.750 353 456
2020-05-16 06:44:30.750 353 456
2020-05-16 06:44:30.750 353 789
2020-05-16 06:45:05.000 353 789
2020-05-16 06:48:07.750 353 789
2020-05-16 06:49:01:110 353 011
2020-05-16 06:50:11:112 353 NULL
Мне нужно написать запрос, который дает мне min (datetime) дочернего taskID 456 и max (datetime) родительского jobId 353, вывод должен выглядеть как
Startime Endtime
2020-05-16 06:43:12.297 2020-05-16 06:50:11:112
Это только для одного дня, т.е. 16 числа, аналогично мне нужны данные за одну неделю. Я попытался выполнить соединение в той же таблице
select
mt1.Starttime, MAX(t1.JobLogDateTime) AS Endtime
from
JobLog t1
inner join (
SELECT jobid, MIN(JobLogDateTime) AS Starttime
FROM JobLog WHERE taskid=456
group by JobLogDateTime, jobid
) mt1
on t1.JobID=mt1.jobid
GROUP BY t1.JobLogDateTime
Это создает проблему из-за неправильного предложения group by, я также пробовал:
SELECT FORMAT(jbl.JobLogDateTime, 'yyyy-MM-dd') AS mainrundate,
child.starttime,
MAX(joblogdatetime) FROM JobLog jbl INNER JOIN
(
SELECT FORMAT(JobLogDateTime, 'yyyy-MM-dd') AS rundate, MIN(joblogdatetime)
AS Starttime FROM JobLog
WHERE TaskID=456
GROUP BY FORMAT(joblogdatetime, 'yyyy-MM-dd')
) child ON child.rundate=jbl.mainrundate
GROUP BY child.starttime, FORMAT(jbl.JobLogDateTime, 'yyyy-MM-dd')
ORDER BY FORMAT(jbl.JobLogDateTime, 'yyyy-MM-dd') desc
, но он говорит, что соединение неверно