У меня есть две таблицы с псевдо-схемой, подобной этой:
CREATE TABLE Task(TaskPK INT)
CREATE TABLE TaskDetails(TaskDetailsPK INT, TaskPK INT, CompleteDate DATETIME NULL, TaskDetailName CHAR(30) , Status CHAR(10))
Обратите внимание, что таблица TaskDetails
имеет столбец CompleteDate
, который также может быть NULL
, а также столбец Status
имеет несколько жестко закодированных значений, таких как «Завершено», «Отменено», «В процессе» , "Ожидание" ....
Я хочу написать запрос для поиска TaskPK
(родительская таблица) в двух случаях:
1- Родитель имеет по крайней мере одну дочернюю запись, которая не в статусе Completed
2- Родитель имеет по крайней мере одну дочернюю запись, которая равна в Completed
Статус И дата его завершения имеет не старше 30 дней с сегодняшнего дня.
Я пытался написать это с GroupBy
, но это не совсем правильно:
select td.TaskPK from TaskDetail td
where ( td.CurrentStatus = 'Complete')
Group By td.TaskPK
Having Min(CompleteDate ) >= DATEADD(day, -30, GETDATE())