プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。
複数レコードのデータを1レコードに集約したいのですが色々試してみましたが上手くいきません。

まず、以下のようなテーブルがあります。

TableA(キーはID)
ID NO
1, 2

TableB(キーはIDとNO)
ID NO SYU_NO FUKU_NO
1, 1, 1, 1
1, 2, 1, 2
1, 3, 2, 1
2, 1, 1, null
   ・
   ・

TableC(キーはIDとKUBUNとNO)
ID KUBUN(SYU or FUKU) NO START END KAKUNIN
1, 1, 1, 20090101, 20091231, 20090310
1, 1, 2, 20090201, 20091130, 20090310
1, 2, 1, 20090401, 20100331, 20090312
   ・
   ・

これを、以下のようなレコードにしたいのですが・・。
ID START(SYU_NO) END(FUKU_NO) START(FUKU_NO) END(FUKU_NO)
1, 20090101, 20091231, 20090401, 20100331

以下のようなselect文を作成しましたが・・。
select
A.ID || ',' ||
case when C.KUBUN = 1 then C.START end || ',' ||
case when C.KUBUN = 1 then C.END end || ',' ||
case when (C.KUBUN = 2 and B.FUKU_NO = C.NO) then C.START end || ',' ||
case when (C.KUBUN = 2 and B.FUKU_NO = C.NO) then C.END end || ',' ||
from
TableA A
inner join
TableB B
on
A.ID = B.ID
and A.NO = B.NO
inner join
TableC C
on
B.ID = C.ID
and ((C.KUBUN = 1 and B.SYU_NO = C.NO)
or (C.KUBUN = 2 and B.FUKU_NO = C.NO))
;

以下のような結果が返ってきます。
ID START(SYU_NO) END(FUKU_NO) START(FUKU_NO) END(FUKU_NO)
1, 20090101, 20091231, ,
1, , , 20090401, 20100331

実は別サイトでも投稿しておりますが回答がなく大変困っております。
どうか宜しくお願い致します。

A 回答 (1件)

今実際には試せないのですが、IDをキーにMAXを使ってグルーピングしたらできませんか?

    • good
    • 0
この回答へのお礼

集計関数で上手くいきました。どうもありがとうございました。

お礼日時:2009/03/26 08:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す