Я пытаюсь выполнить запрос SQL SELECT, используя оператор CASE, который работает на 100%. Мой код выглядит следующим образом:
SELECT t.TASK_WINDOW,
SUM(CASE WHEN t.TASK_NAME = 'DEV' AND t.TASK_STATUS = 'Completed' THEN 1 ELSE 0 END) AS DevComplete,
SUM(CASE WHEN t.TASK_NAME = 'TEST' AND t.TASK_STATUS = 'Completed' THEN 1 ELSE 0 END) AS TestComplete,
SUM(CASE WHEN t.TASK_NAME = 'RELEASE' AND t.TASK_STATUS = 'Completed' THEN 1 ELSE 0 END) AS ReleaseComplete
FROM Requirements r
INNER JOIN Tasks t
ON r.TASK = t.REQ_ID
GROUP BY t.TASK_WINDOW
Однако моя проблема в том, что у меня есть дополнительные критерии для всех трех SUMS. Сложность заключается в том, что требование может иметь несколько задач каждого типа, но, например, требование должно быть завершено только в том случае, если все его задачи разработки выполнены, в противном случае оно является неполным.
Я действительно хочу иметь возможность измерять количество требований со всеми завершенными задачами разработки, а также со всеми завершенными задачами тестирования и всеми задачами выпуска, но сгруппировать их все по последнему окну выполнения задачи разработки.
Пожалуйста помоги ;-)
1 ответ
Вам нужно сравнить общее количество с полным числом:
SELECT t.TASK_WINDOW,
CASE
WHEN SUM(CASE WHEN t.TASK_NAME = 'DEV' THEN 1 ELSE 0 END) =
SUM(CASE WHEN t.TASK_NAME = 'DEV' AND t.TASK_STATUS = 'Completed' THEN 1 ELSE 0 END)
Then 1
ELSE 0
END as AllDevComplete
FROM Requirements r
INNER JOIN Tasks t
ON r.TASK = t.REQ_ID
GROUP BY t.TASK_WINDOW
В качестве альтернативы вы можете искать номер, который НЕ является полным. Но тот же базовый прием — случай суммы случая — сработает.
Похожие вопросы
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.