У меня есть таблица.
TASK_CD | STATUS | DUE_DATE
----------------------------------
T0001 | NW | SYSDATE + 1
T0001 | IP | SYSDATE
T0001 | AG | SYSDATE
T0002 | NW | SYSDATE - 1
T0002 | NW | SYSDATE - 2
T0003 | AG | SYSDATE + 1
У меня сейчас запрос
select TASK_CD, STATUS, SUM(1) TOTALS,
SUM(CASE WHEN (TRUNC(DUE_DATE ) > SYSDATE) then 1 else 0 end) FUTURE,
SUM(CASE WHEN (TRUNC(DUE_DATE ) = SYSDATE) then 1 else 0 end) TODAY,
SUM(CASE WHEN (TRUNC(DUE_DATE ) < SYSDATE) then 1 else 0 end) OVERDUE,
FROM TM_TASK GROUP BY TASK_CD, STATUS;
Результат будет
TASK_CD | STATUS | TOTALS | FUTURE | TODAY | OVERDUE
----------------------------------------------------
T0001 | NW | 1 | 1 | 0 | 0
T0001 | IP | 1 | 0 | 1 | 0
T0001 | AG | 1 | 0 | 1 | 0
T0002 | NW | 2 | 0 | 0 | 2
T0003 | AG | 1 | 1 | 0 | 0
При удаленииСОСТОЯНИЕ от выбора и группы, я получаю
TASK_CD | TOTALS | FUTURE | TODAY | OVERDUE
-----------------------------------------------
T0001 | 3 | 1 | 2 | 0
T0002 | 2 | 0 | 0 | 2
T0003 | 1 | 1 | 0 | 0
Есть ли способ объединить оба и объединить результаты, давая мне TOTALS_ALL, FUTURE_TOTALS, OVERDUE_TOTALS, TODAY_TOTALS, где это суммы, когда статус не рассматривается дляGROUP BY
TASK_CD | STATUS | TOTALS | FUTURE | TODAY | OVERDUE| TOTALS_ALL | FUTURE_TOTAL | TODAY_TOTAL | OVERDUE_TOTAL
T0001 | NW | 1 | 1 | 0 | 0 | 3 | 1
| 2 | 0
T0001 | IP | 1 | 0 | 1 | 0 | 3 | 1
| 2 | 0
T0001 | AG | 1 | 0 | 1 | 0 | 3 | 1
| 2 | 0
T0002 | NW | 2 | 0 | 0 | 2 | 2 | 0
| 0 | 2
T0003 | AG | 1 | 1 | 0 | 0 | 1 | 1
| 0 | 0