0

結果ごとに複数のアクティビティ ('act's) がある場合でも、結果ごとに 1 つの行を返す方法を見つけようとしています。私は無駄に読んで検索しました。

私が欲しいもの:

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)
4

1 に答える 1

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

列名に中括弧を使用しないでください。

于 2013-06-25T15:36:41.457 に答える