SELECT
CASE
WHEN Max([Status]) = 'COMPLETED'
THEN 'COMPLETED'
WHEN MAX([Status]) != 'COMPLETED'
AND (DENSE_RANK() OVER (PARTITION BY Branch, Place ORDER BY [priority])) < 4
THEN 'CURRENT'
ELSE 'INCOMPLETE'
END AS [STATUS]
FROM
TEMP_JOB
Мои данные такие, я пытаюсь это сделать на SQL Сервер
Branch Place Item Status
------|------|-------|--------------------
B1 P1 I1 COMPLETE
B1 P1 I1 COMPLETE
B1 P1 I2 COMPLETE
B1 P1 I2 COMPLETE
B1 P1 I2 INPROGRESS
B1 P1 I3 INPROGRESS
B1 P1 I3 INPROGRESS
Мне нужны данные для консолидации следующим образом. Для каждой ветви и места, если все элементы с одинаковым номером элемента являются полными, тогда статус должен быть Завершенным, если хотя бы одна строка элемента является InProgress, тогда статус должен отображаться как INPROGRESS
Branch Place Item Status
------|-------|-------|--------------------
B1 P1 I1 COMPLETE
B1 P1 I2 INPROGRESS
B1 P1 I3 INPROGRESS
Я пробовал несколько операторов case, но результат не верный.
введите описание изображения здесь