テーブルA 伝票番号 コードA コードB 数量 -------- -------- -------- ---- 0001 A01 B01 10 0002 A01 B01 20 0003 A02 B02 30 0004 A02 B02 40 テーブルB 伝票番号 コードA 数量 -------- ------- ---- 0001 A01 50 0002 A01 60 テーブルAを、コードA、コードBで集計 テーブルBを、コードAで集計(テーブルBにはコードBがないのでダミーでB03とする) して出力する。 出力結果 コードA コードB 合計数量 ------- ------- -------- A01 B01 30 A02 B02 70 A01 B03 110
create Table テーブルA(
伝票番号 char(4),
コードA char(3),
コードB char(3),
数量 number(2));
create Table テーブルB(
伝票番号 char(4),
コードA char(3),
数量 number(2));
insert into テーブルA(伝票番号,コードA,コードB,数量) values('0001','A01','B01',10);
insert into テーブルA(伝票番号,コードA,コードB,数量) values('0002','A01','B01',20);
insert into テーブルA(伝票番号,コードA,コードB,数量) values('0003','A02','B02',30);
insert into テーブルA(伝票番号,コードA,コードB,数量) values('0004','A02','B02',40);
insert into テーブルB(伝票番号,コードA,数量) values('0001','A01',50);
insert into テーブルB(伝票番号,コードA,数量) values('0002','A01',60);
commit;
select コードA,コードB,sum(数量) as 合計数量
from (select コードA,コードB,数量 from テーブルA
union all select コードA,'B03',数量 from テーブルB)
group by コードA,コードB
order by コードB,コードA;
インラインビュー内で和集合を作成して、グループ化してます。