说明:有三个表,项目表、合同表、付款表。下面是建表的语句:create table 项目 (项目编号 int,项目名称 varchar(50))
insert into 项目
select 1,'项目1' from dual
union all
select 2,'项目2' from dual
union all
select 3,'项目3' from dual;create table 合同(合同编号 int,项目编号 int,合同金额 number(7,3))
insert into 合同
select 1,1,1000 from dual
union all
select 2,1,1500 from dual
union all
select 3,2,2000 from dual;create table 付款(付款编号 int ,合同编号 int,付款金额 number(7,3))
insert into 付款
select 1,1,100 from dual
union all
select 2,2,200 from dual
union all
select 3,2,800 from dual;
设计一个查询语句,检索的格式如下:----------------------------------------------------------------------
项目编号 项目名称 项目所有合同的金额 项目所有合同已付款金额
1 项目1 2500.000 11000.000
2 项目2 2000.000 null
----------------------------------------------------------------------我给出的答案
select a.项目编号,a.项目名称,sum(b.合同金额)项目所有合同的金额,sum(c.付款金额)项目所有合同已付款金额
from 项目 a left join 合同 b on a.项目编号 = b.项目编号 left join 付款 c on b.合同编号 = c.合同编号
where b.合同金额 >0
group by a.项目编号,a.项目名称出现的结果:
1 项目1 4000 1100
2 项目2 2000
谁能告诉我那儿错了,并给出正确答案!
我在耐心等待!
insert into 项目
select 1,'项目1' from dual
union all
select 2,'项目2' from dual
union all
select 3,'项目3' from dual;create table 合同(合同编号 int,项目编号 int,合同金额 number(7,3))
insert into 合同
select 1,1,1000 from dual
union all
select 2,1,1500 from dual
union all
select 3,2,2000 from dual;create table 付款(付款编号 int ,合同编号 int,付款金额 number(7,3))
insert into 付款
select 1,1,100 from dual
union all
select 2,2,200 from dual
union all
select 3,2,800 from dual;
设计一个查询语句,检索的格式如下:----------------------------------------------------------------------
项目编号 项目名称 项目所有合同的金额 项目所有合同已付款金额
1 项目1 2500.000 11000.000
2 项目2 2000.000 null
----------------------------------------------------------------------我给出的答案
select a.项目编号,a.项目名称,sum(b.合同金额)项目所有合同的金额,sum(c.付款金额)项目所有合同已付款金额
from 项目 a left join 合同 b on a.项目编号 = b.项目编号 left join 付款 c on b.合同编号 = c.合同编号
where b.合同金额 >0
group by a.项目编号,a.项目名称出现的结果:
1 项目1 4000 1100
2 项目2 2000
谁能告诉我那儿错了,并给出正确答案!
我在耐心等待!
解决方案 »
- 新人报道另加问题咨询
- 如何配置才能让oracle产生redirect数据包?
- 要设计大型数据库,图片存在数据库中,应该怎么设计数据库
- 使用Odp.net,传参数Update无法更新,只有拼接字符串才有用
- orace sql 求助 谢谢!
- Oracl中的使用utl_file来读取FTP服务器上指定的文件?
- 在创建新的资料档案库时,为什么最后系统出现如下错误提示ora-12518
- 如何格式化200為 200.0的 樣式??????????
- 请教各位大虾:ORACLE中删除表引起的碎片问题?
- 关于oracle存储过程发邮件的问题请教
- 如何得到当前操作人的机器名和程序名么
- oracle建立数据库的过程问题
再和a 联,否则做出来的合同金额会多加的
主要是合同编号为2那条,你付款有两条
你直接这样做
会多一条合同金额为1500的
from a,
(
select b.项目编号 ,b.合同编号,b.合同金额,sum(c.付款金额) 付款金额
from b,c
where b.合同编号 = c.合同编号(+)
group by b.项目编号 ,b.合同编号,b.合同金额
) d
where a.项目编号 = b.项目编号(+)
谢谢啊,用distinct很好,很有用,谢谢啊!