2016-11-29 90 views
0

我有两个表有以下栏目:联盟一个领域,但和其他来自不同表

SalesTable - invnum, brand, turnover, gp with values: 

1. Pepsi, 30000, 15000 
2. Coke, 40000, 20000 
3. Mountain Dew, 10000, 3000 
4. Dr Pepper, 5000, 2300 
5. Pepsi, 10000, 5000 


SalesOrderTable - ordernum, brand, ordervalue, ordergp 
with values: 

1. Pepsi, 50000, 25000 
2. Coke, 20000, 15000 
3. Vitamin Water, 30000, 12000 
4. Coke, 10000, 5000 

我需要工会从两个表的品牌栏目,以便从两个表中的唯一值,只显示总和所有其他栏目。结果应该如下所示:

brand, inv_value, inv_gp, order_value, order_gp 

Pepsi   40000 20000 50000 25000 

Coke   40000 20000 30000 20000 

Mountain Dew 10000 3000  0  0 

Dr Pepper  5000 2300  0  0 

Vitamin Water  0  0 30000 12000 

谢谢!

+0

交叉验证结果data.Because结果的数据和表数据不明确 – Mansoor

+0

喜曼苏尔。我再次检查,结果数据与我需要的相关。我需要将SalesTables值相加和OrderTable值相加。 – user3409529

回答

0

试试这个 SELECT * FROM SalesTable 自然连接SalesOrderTable

-1

检查。

  create table #SalesTable 
      (
      invnum int, 
      brand varchar(20), 
      turnover int, 
      gp int 
      ) 


      insert into #SalesTable values 
      (1, 'Pepsi', 30000, 15000), 
      (2,'Coke', 40000, 20000), 
      (3,'Mountain Dew',10000,3000), 
      (4,'Dr Pepper', 5000, 2300), 
      (5,'Pepsi', 10000, 5000) 


      create table #SalesOrderTable 
      (
      ordernum int, 
      brand varchar(20), 
      ordervalue int, 
      ordergp int 
      ) 


      insert into #SalesOrderTable values 
      (1,'Pepsi', 50000, 25000), 
      (2,'Coke', 20000, 15000), 
      (3,'Vitamin Water', 30000, 12000), 
      (4,'Coke', 10000, 5000) 


      select distinct 
      coalesce(st.brand,so.brand) as Brand, 
      coalesce(st.turnover,'0') as inv_value, 
      coalesce(st.gp,'0') as inv_gp, 
      coalesce(so.ordervalue,'0') as order_value, 
      coalesce(SO.ordergp,'0') as order_gp 
      from 
      (
      select brand,sum(ordervalue) as ordervalue ,sum(ordergp) as ordergp from #SalesOrderTable 
      group by brand 
      )so 
      full outer join 
      (
      select brand,SUM(turnover) as turnover,SUM(gp) as gp from #SalesTable 
      group by brand 
      )ST 
      on SO.brand=ST.brandon SO.brand=ST.brand 
+0

@ user3409529你检查过了吗? –

+0

嗨,Bhosale先生。是的,完美地工作,谢谢! – user3409529

+0

@ user3409529 mw。将其标记为答案。并投票。如果它的工作 –

0

我想这也是罚款的要求:简单,易于通过UNION ALL和聚合函数来实现:

select brand, 
    sum(t.turnover) turnover, 
    sum(t.gp) gp, 
    sum(t.ordervalue) ordervalue, 
    sum(t.ordergp) ordergp from 
    (
    select brand, turnover, gp, 0 ordervalue, 0 ordergp 
    from #SalesTable 
    union all 
    select brand, 0, 0, ordervalue,ordergp 
    from #SalesOrderTable) t group by t.brand