Верните только одну строку из Oracle SQL, используя внешнее соединение и оператор case

Я пытаюсь понять, как просто вернуть одну строку за результат, даже если в результате есть несколько действий ("действие"). Я читал и искал безрезультатно.

Что я хочу:

Date Site Result act1 act2

1985-06-10 1008 NT6 5 10

Что я получаю:

Date Site Result act1 act2

1985-06-10 1008 NT6 5 
1985-06-10 1008 NT6 10

Здесь мой (пример) код, который я знаю, не сломан, но это путь, который я пробовал. Я просто не знаю, как получить то, что я хочу.

SELECT
t."Date",
t."Site",
t."Result",
CASE
 WHEN a.Type = 'act1'
 THEN a.Count
END AS "act1",
CASE
 WHEN a.Type = 'act2'
 THEN a.Count
END AS "act2"
FROM 
(
SELECT Sample.SAMPLE_ID,
 Sample.Date,
 Sample.Site,
 Sample.Result 
FROM Sample
WHERE Sample.Date is Between then and now
) t
LEFT OUTER JOIN
ACTIVITY
ON (ACTIVITY.SAMPLE_ID = t.SAMPLE_ID)
1 ответ

Ну вот

select t."Date", t."Site", t."Result",
 sum(case when a.Type = 'act1' then a.Count else 0 end ) AS act1,
 sum(case when a.Type = 'act2' then a.Count else 0 end ) AS act2
from sample left outer join activity
 on (activity.sample_id = t.sample_id)
where sample.date is between then and now

и не используйте фигурные скобки для имен столбцов.

licensed under cc by-sa 3.0 with attribution.