0

私は 2 つのテーブル sugar_distribution と farmer_dir を持っています。

sugar_distribution テーブルには、season_cd、farmer_id、および Tons_supplied 列があります。farmer_dir には farmer_name と farmer_id が含まれます。私が必要なのは

Farmer_id       Farmer_name    Tons@2006         Tons@2012

123              Ramesh G       145.215           548.125
321              Ravish         214.123           783.215

season_cd は年フィールドです。2006 年と 2012 年の両方で提供されたパーティを分析したいと思います。以下のクエリを試しましたが、必要なものが得られませんでした。

SELECT DISTINCT farmer_id,

(SELECT sum(tons)
 FROM sugar_distribution
 WHERE      (farmer_id = A.farmer_id) 
    AND (season_cd = 2)) AS T2006,

(SELECT sum(tons)
 FROM sugar_distribution
 WHERE      (farmer_id = A.farmer_id) 
    AND (season_cd = 8)) AS T2012

FROM sugar_distribution A 
WHERE A.season_cd = 2 OR A.season_cd = 8 order by to_number(farmer_id)
4

3 に答える 3

0

これは、条件付き集計を使用した集計クエリです。

SELECT fd.farmer_id, fd.farmer_name,
       sum(case when season_cd = 2 then tons else 0 end) as tons2006,
       sum(case when season_cd = 8 then tons else 0 end) as tons2012
from farmer_dir fd join
     sugar_distribution sd
     on fd.farmer_id = sd.farmer_id
group by fd.farmer_id, fd.farmer_name
having tons2006 > 0 and tons2012 > 0

最後のhaving条項は、農家が両方の年の記録を持っていることを保証するだけです。

于 2013-07-01T11:14:53.113 に答える