这种情况怎么办,sql熟手请援(100分)

  • 主题发起人 主题发起人 coolnerd
  • 开始时间 开始时间
C

coolnerd

Unregistered / Unconfirmed
GUEST, unregistred user!
数据库环境:Oracle8i
问题的描述:两张表用id关联汇总,但如果某张表缺少某数据,就无法汇总出来,
如何以0的形式补上缺少的数据呢?
示意如下:
table1 table2
id price id count
A 10 A 7
B 20
C 30 C 20
/_____________________________/
/||/
// 如何汇总为

ID price count cost
A 10 7 70
B 20 0 0 (这条如何补入?)
C 30 20 600



 
select a.id,a.price,isnull(b.count,0),isnull(a.price*b.count,0) as cost
from table1 a left outer join table2 on a.id=b.id

适用SQL SERVER
 
写个视图
Select
A.Id,A.Price,B.Count ,(A.Price*B.Count) as Cost
from A,b Where A.ID=B.ID
 
to 草央包包: 谢谢,不过偶是Oracle啊!
to 无疯无禄: 你,你,你!! 拜托看清问题好不好。
本来想说:是个人就能写出这句来,现在不说你了。。。

难道我描述的哟问题?
table2中缺少B的数量! 统计的时候希望认为B的数量是0,就是这样。
 
我人在广州出差,想快点回北京,大家帮帮忙吧。
 
先生成一含有各个检索字段的临时表,在添加数据前先置字段值为零,然后将汇总数据逐一添加。最后则产生汇总数据表。
 
select a.id,a.price,nvl(b.count,0),nvl(a.price*b.count,0) as cost
from table1 a,table2 b
where a.id(+)=b.id

适用ORACLE
 
肯定是草央包包所說的用連接的方式進行關聯
好像存在一個Join...On命令吧
 
没看清,哈哈哈
Oracle 没用过
 
谢谢草央宝宝!

这是看草央宝宝答案前,我琢磨出来的。
select a.id,a.price,decode(b.count,null,0,b.count), from temp_a a,temp_b b where a.id=b.id(+)

草央宝宝的,应该改成左连接(我的理解,那边缺数据,就在那边加“(+)”,应该是这样吧)
select a.id,a.price,nvl(b.count,0),nvl(a.price*b.count,0) from temp_a a,temp_b b where a.id=b.id(+)

nvl函数以前见过,这里没想起来。谢谢宝宝。
 
不好意思,只能这样找到[h1][green]草央宝宝[/green][/h1]
请帮忙看看这个可解否?
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1466195
 
后退
顶部