2013-06-25 42 views
0

我試圖弄清楚如何爲每個結果返回一行,即使每個結果有多個活動('act')。我已閱讀和搜索無濟於事。從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) 

回答

0

在這裏你去

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 

,不要使用列名括號。

+0

完美。謝謝。 –