问一个简单的SQL语句的使用问题! (20分)

  • 主题发起人 主题发起人 Sammo
  • 开始时间 开始时间
S

Sammo

Unregistered / Unconfirmed
GUEST, unregistred user!
表一的结构和数据如下:

编码 名称 进仓数 进仓金额
1001 苹果 100 200
1001 苹果 200 400

表二的结构和数据如下:
编码 名称 出仓数 出仓金额
1001 苹果 50 100
1002 雪梨 200 300
1002 雪梨 100 150

我想把表一和表二合成表三如下:
编码 名称 进仓数 进仓金额 出仓数 出仓金额
1001 苹果 300 600 50 100
1002 雪梨 300 450

~~~~~~~~请看清楚不是要得出如下的结果:~~~~~~~~~~~~~
编码 名称 进仓数 进仓金额 出仓数 出仓金额
1001 苹果 300 600 50 100

使用的是ACCESS数据,请问SQL语句怎么写?我写了好像数据有点问题,所以想请教一下各位老大!:)
 
select a.编码,a.名称,总进仓数,总进仓金额,总出仓数,总出仓金额 from
(select 编码, 名称,sum(进仓数) as 总进仓数 ,sum(进仓金额) as 总进仓金额 from 表一 group by 编码, 名称) as a
(select 编码, 名称,sum(出仓数) as 总出仓数 ,sum(出仓金额) as 总出仓金额 from 表一 group by 编码, 名称) as b
where a.编码=b.编码
 
select a.编码,a.名称,a.总进仓数,a.总进仓金额,b.总出仓数,b.总出仓金额 from 表一 a
a,表二 b where a.编码=b.编码
 
楼上的两位都误解我的意思了!!
您们的语句执行后,得出的结果如下的:

编码 名称 进仓数 进仓金额 出仓数 出仓金额
1001 苹果 300 600 50 100

而不是:
编码 名称 进仓数 进仓金额 出仓数 出仓金额
1001 苹果 300 600 50 100
1002 雪梨 300 450

要是表一里没有存在表二的“编码”时,怎么样才可以把表二里的数据加入到表三中呢?
 
用Full Outer Join吧:
select IsNull(a.编码,b.编码),IsNull(a.名称,B.名称),总进仓数,总进仓金额,总出仓数,总出仓金额 from
(select 编码, 名称,sum(进仓数) as 总进仓数 ,sum(进仓金额) as 总进仓金额 from 表一 group by 编码, 名称) as a
Full Outer Join
(select 编码, 名称,sum(出仓数) as 总出仓数 ,sum(出仓金额) as 总出仓金额 from 表一 group by 编码, 名称) as b
On a.编码=b.编码
 
To TYZhang:
无法执行此SQL语句!我的数据库是ACCESS的!
 
用右连接就可以了 给分吧!..
select a.编码,a.名称,a.总进仓数,a.总进仓金额,b.总出仓数,b.总出仓金额
from 表一 a right join 表二 b on ( a.编码=b.编码)

 
To chshanghai:
您的语句得出和结果和jammi, 风中流云的结果是一样的!
您们的语句执行后,得出的结果如下的:

编码 名称 进仓数 进仓金额 出仓数 出仓金额
1001 苹果 300 600 50 100

而不是我要的结果:
编码 名称 进仓数 进仓金额 出仓数 出仓金额
1001 苹果 300 600 50 100
1002 雪梨 300 450
 
access没用过外联接,不知道怎么写。
但用外联接肯定可以实现。不知道
where a.col=b.col(+)是不是标准的sql语法。oralce中是这样用的。
 
ACCESS太弱智,Isnull,case都不能用,一条语句实在写不出了.
分三种情况合并算了.
 
To bluerain:
那么请老大帮帮小弟吧!!怎么样分三条SQL语句来实现呢?
 
分三条吧:
insert table3
select A.编码,A.名称,A.总进仓数,A.总进仓金额,0,0 from
(select 编码, 名称,sum(进仓数) as 总进仓数 ,sum(进仓金额) as 总进仓金额 from table1 group by 编号, 名称) as A
where 编码 not in (Select distinct 编码 from table2)

insert table3
select B.编码,B.名称,0,0,B.总出仓数,B.总出仓金额 from
(select 编码, 名称,sum(出仓数) as 总出仓数 ,sum(出仓金额) as 总出仓金额 from table2 group by 编码, 名称) as B
where 编码 not in (select distinct 编码 from table1)

insert table3
select A.编码,A.名称,A.总进仓数,A.总进仓金额,B.总出仓数,B.总出仓金额 from
(select 编码, 名称,sum(进仓数) as 总进仓数 ,sum(进仓金额) as 总进仓金额 from table1 group by 编号, 名称) A,
(select 编码, 名称,sum(出仓数) as 总出仓数 ,sum(出仓金额) as 总出仓金额 from table2 group by 编码, 名称) B
where A.编码=B.编码
 
给分了!!
 
后退
顶部