2017-11-11 11 views
0

私は2つのテーブルを持っています:テーブル1購入と別の販売テーブルは、実際にはテーブルの購入から2つのテーブルを減算して使用するバランスを必要とします。私のコードは購入と売り上げから差し引いた残高のテーブル

create table purchase(
id number(10) primary key, 
name varchar2(10), 
p_qty number(10) 
); 

の下に与えられ、データを挿入します

insert into purchase values(01,'productB',235); 
insert into purchase values(04,'productC',394); 
insert into purchase values(05,'productD',381); 
insert into purchase values(08,'productE',357); 
insert into purchase values(09,'productF',389); 
insert into purchase values(10,'productQ',336); 

別のテーブル:販売

create table sales(
id number(10), 
s_qty number(10), 
constraint pid_pk foreign key (id)REFERENCES purchase(id) 
); 

挿入データは、テーブルsalseする:私は

insert into sales values(01,34); 
insert into sales values(04,54); 
insert into sales values(05,44); 
insert into sales values(09,50); 
insert into sales values(01,3); 
insert into sales values(04,4); 
insert into sales values(05,5); 
insert into sales values(09,53); 
insert into sales values(01,2); 
insert into sales values(04,2); 
insert into sales values(05,2); 
insert into sales values(09,2); 
insert into sales values(01,4); 
insert into sales values(04,9); 
insert into sales values(05,11); 
insert into sales values(09,7); 

と使用した2つのクエリを

クエリ1:

select id,name,sum(p_qty) as p_total from purchase group by id,name; 
ID NAME  P_TOTAL 
5  productD 381 
10 productQ 336 
4  productC 394 
1  productB 235 
8  productE 357 
9  productF 389 

QUERY2:

select id,sum(s_qty) as s_total from sales group by id;` 

ID S_TOTAL 
1  43 
4  69 
5  62 
9  112 

今私はあなたがほとんどそこにいる各項目

ID NAME  P_TOTAL  S_TOTAL BALANCE 
5 productD 381   62  319 
4 productC 394   69  325 
1 productB 235   43  192 
9 productF 389   112  277 

答えて

2

希望します。

SELECT p.id, p.name, p.p_total, s.s_total, 
    p.p_total - s.s_total AS balance 
    FROM (select id, name, sum(p_qty) as p_total FROM purchase 
    GROUP BY id, name) p 
    INNER JOIN (select id, sum(s_qty) as s_total FROM sales 
    GROUP BY id) s 
    ON s.ID = p.ID; 
0

バランスのために、テーブルの下にしたいです。既に持っている2つのクエリを取り、一緒に参加してください:

SELECT p.ID, 
     p.NAME, 
     p.P_TOTAL, 
     s.S_TOTAL, 
     p.P_TOTAL - s.S_TOTAL AS BALANCE 
    FROM (select id, name, sum(p_qty) as p_total 
      from purchase 
      group by id, name) p 
    INNER JOIN (select id, sum(s_qty) as s_total 
       from sales 
       group by id) s 
    ON s.ID = p.ID 

最高の運があります。

+0

おかげですべての、すべてのコードがうまく働いている、私は一つだけ答えを選択することができ、私は最初の答えを選択し、もう一度感謝@Bobジャービス、ゴードン・リノフ、ニッシュ – khan

0

私はバランスのためにテーブルの下にしたい各項目

あなたの方法は、あなたは、各項目のバランスをしたいが、あなただけの売上高の項目のバランスを示しています。

あなたが購入された各項目をしたい場合は、サブクエリでleft joinを使用することができます:あなたが販売されている各項目をしたい場合は、単にinner joinを使用

select p.id, p.name, p_total, coalesce(s_total, 0), 
     (p_total - coalesce(s_total, 0)) as balance 
from (select id, name, sum(p_qty) as p_total 
     from purchase 
     group by id,name 
    ) p left join 
    (select id, sum(s_qty) as s_total 
     from sales 
     group by id 
    ) s 
    on p.id = s.id; 

+0

私はゴードン・リノフ@コードを使用してビューを作成することができます – khan

関連する問題