现有出租表 a
合同号, 出租单号,品名,出租数量.
1 1 小模板 10
1 2 小模板 5
--------------------------
回收表 b
合同号, 回收单号,品名,回收数量.
1 1 小模板 10
1 2 小模板 6
---------------------------
欲统计这个合同 每种物料分回收单号显示多回收部分,不多的回单号不显示
如下:
合同号, 回收单号,品名,回收数量.多回数量
1 2 小模板 6 1
请教高手处理思路.多谢
合同号, 出租单号,品名,出租数量.
1 1 小模板 10
1 2 小模板 5
--------------------------
回收表 b
合同号, 回收单号,品名,回收数量.
1 1 小模板 10
1 2 小模板 6
---------------------------
欲统计这个合同 每种物料分回收单号显示多回收部分,不多的回单号不显示
如下:
合同号, 回收单号,品名,回收数量.多回数量
1 2 小模板 6 1
请教高手处理思路.多谢
from a,b
where a.合同号=b.合同号
and a.回收数量>b.出租数量
from a,b
where a.合同号=b.合同号
and a.出租单号=b.回收单号
and b.回收数量>a.出租数量
(select sum(回收数量) from b o where o.ID <= b.ID) > a.出租数量
and a.合同号= b.合同号
and a.编号= b.编号 有种这样的思路,不知道你看不看得懂?
create table 出租
(合同号 int , 出租单号 int ,品名 varchar(100),出租数量 int )insert into 出租
select 1,1 , '小模板',10 union
select 1,2 , '小模板',5create table 回收
(合同号 int , 回收单号 int ,品名 varchar(100),回收数量 int )insert into 回收
select 1,1 , '小模板',10 union
select 1,2 , '小模板',6
--测试语句
select b.合同号,回收单号,b.品名,回收数量 from(
select 合同号,回收单号,品名,回收数量,(select sum(回收数量)
from 回收 where 回收单号<=a.回收单号) as 回收总量
from 回收 a) b,
(select 合同号,品名,sum(出租数量) as 出租总量 from 出租 group by 合同号,品名)c
where b.合同号=c.合同号 and b.品名=c.品名 and 回收总量>出租总量/*--显示结果
1 2 小模板 6
*/--删除测试环境
drop table 回收
drop table 出租
create table 出租
(合同号 int , 出租单号 int ,品名 varchar(100),出租数量 int )insert into 出租
select 1,1 , '小模板',10 union
select 1,2 , '小模板',5create table 回收
(合同号 int , 回收单号 int ,品名 varchar(100),回收数量 int )insert into 回收
select 1,1 , '小模板',10 union
select 1,2 , '小模板',6
--测试语句
select b.合同号,回收单号,b.品名,回收数量,
case when 回收数量<回收总量-出租总量 then 回收数量
else 回收总量-出租总量 end as 多回收数量
from(
select 合同号,回收单号,品名,回收数量,(select sum(回收数量)
from 回收 where 回收单号<=a.回收单号) as 回收总量
from 回收 a) b,
(select 合同号,品名,sum(出租数量) as 出租总量 from 出租 group by 合同号,品名)c
where b.合同号=c.合同号 and b.品名=c.品名 and 回收总量>出租总量/*--显示结果
1 2 小模板 6 1
*/--删除测试环境
drop table 回收
drop table 出租
b.回收数量 - a.出租数量 AS 多回数量
FROM a INNER JOIN
b ON a.合同号 = b.合同号 AND b.回收数量 > a.出租数量
Select y.回收数量 - x.出租数量 as 多回数量
From
(Select 合同号,回收单号,sum(a.出租数量) as 出租数量 From a group by 合同号,回收单号)
x
(Select 合同号,回收单号,sum(b.回收数量) as 回收数量 From b group by 合同号,回收单号)
y
Where x.合同号 = y.合同号 and x.回收单号 = y.回收单号 and y.回收数量 > x.出租数量
From
(Select 合同号,回收单号,sum(a.出租数量) as 出租数量 From a group by 合同号,回收单号)
x
(Select 合同号,回收单号,sum(b.回收数量) as 回收数量 From b group by 合同号,回收单号)
y
Where x.合同号 = y.合同号 and x.回收单号 = y.回收单号 and y.回收数量 > x.出租数量