简单的问题--MSSQL的一句SQL语句(200分)

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

CJ

Unregistered / Unconfirmed
GUEST, unregistred user!
简单的不能再简单

合同子表
合同编号,产品编号,数量
出货子表
编号,产品编号,数量

其中,一条合同记录对应多条出货记录,我希望计算出
海有多少产品没出,产生类似一下的表
编号(流水,无所谓),产品,数量
 
以下SQL在Oracle8i下通过。我对SQL Server不熟,你看能不能变为SQL Server能
使用的SQL.

SELECT A.合同编号,A.产品编号,A.数量-NVL(D.数量,0) 数量
FROM 合同子表 A,(SELECT B.合同编号 合同编号,
B.产品编号 产品编号,
SUM(B.数量) 数量
FROM 提货子表 B
GROUP BY B.合同编号,B.产品编号) D
WHERE A.合同编号=D.合同编号(+) AND
A.产品编号=D.产品编号(+) AND
A.数量-NVL(D.数量,0)>0
 
select a.合同编号,a.产品编号,a.数量,b.数量,没出=a.数量-b.数量
FROM 合同子表 A,(SELECT 产品编号,SUM(数量) 数量 FROM 出货子表 B
GROUP BY 产品编号) b
where a.产品编号=b.产品编号

 
select a.合同编号,b.产品编号,a.sl-sum(b.sl) 未出货数量
from 合同子表 a,出货子表 b
where a.产品编号=b.产品编号
group by 合同编号,a.数量,b.产品编号

该语句只适合于合同子表与出货子表一对多的情况,
即一条合同记录仅对应于一项产品。
 
agree 沈前卫
 
SELECT A.合同编号,A.产品编号,A.数量-NVL(D.数量,0) 数量
FROM 合同子表 A,(SELECT B.合同编号 合同编号,
B.产品编号 产品编号,
SUM(B.数量) 数量
FROM 提货子表 B
GROUP BY B.合同编号,B.产品编号) D
WHERE A.合同编号=D.合同编号(+) AND
A.产品编号=D.产品编号(+) AND
A.数量-NVL(D.数量,0)>0
%-)
 
wgzhang:
flower.liu:
你们好象没考虑合同子表中有产品编号而提货子表中无产品编号的情况!

huahui:
你怎么跟我完全一样呢? {B-)
 
真CJ丢人啊,问如此的问题和和.
过会出个难的.
 
ORACLE:(
I wanna mssql:(((
but it works, thanx a lot a lot a lot a lot!!!!!!!!!!!!!1
sorry, I end the question a bit late
 
后退
顶部