Теперь у меня есть следующий SQL:Как объединить «похожие» строки в SQL?
SELECT * FROM (
SELECT Employee, Template, TRUNC(A.FROM) DATE_FROM, SUM(B.AMOUNTTOTAL) AMNT_TOTAL, SUM(B.AMOUNT) AMNT
FROM Table1 A, Table2 B, Table3 C
WHERE ...
GROUP BY Employee, Template, TRUNC(A.FROM)
)
PIVOT
(
SUM (AMNT_TOTAL)
FOR DATE_FROM IN ('01-MAY-2015' date1, '02-MAY-2015' date2, '03-MAY-2015' date3)
)
И результат запроса:
+------------+------------+--------+---------+---------+---------+
| Employee | Template | AMNT | DATE1 | DATE2 | DATE3 |
+------------+------------+--------+---------+---------+---------+
| Kate | TemplA | 2 | | 12 | |
| Kate | TemplA | 4 | | | |
| Kate | TemplA | 7 | 16 | | 14 |
| John | TemplB | 5 | 18 | 25 | |
+------------+------------+--------+---------+---------+---------+
Как преобразовать данные в следующем виде:
+------------+------------+---------+---------+---------+
| Employee | Template | DATE1 | DATE2 | DATE3 |
+------------+------------+---------+---------+---------+
| Kate | TemplA | 16|7 | 12|2 | 14|7 |
| John | TemplB | 18|5 | 25|5 | |
+------------+------------+---------+---------+---------+
Я знаю, что могу использовать конкатенацию оператор: добавить внешний запрос:
SELECT
Employee,
Template,
CASE WHEN DATE1 IS NOT NULL THEN DATE1||'|'||AMNT END DATE0,
...
FROM (old_query)
Но как сгруппировать?
Вы уверены, что вы не будете иметь никаких дубликатов для данной пары дата/шаблон? –
Да, я уверен, поскольку я пытаюсь повторить функциональность из старого приложения с теми же данными – Darkwing