0

我试图弄清楚如何每个结果只返回一行,即使每个结果有多个活动('act's)。我已阅读并搜索无济于事。

我想要的是:

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 回答