求救较复杂的SQL语句!!在线等 ,很急啊!!!!
恋风的鸟 2003-12-23 09:12:42 分类 品名 上月结存 本月入库 本月领用 本月结存
数量 金额 数量 金额 数量 金额 数量 金 额
为了实现如上的表结构,实现的结果是如果这个月没有本月入库,那本月入库的数量和金额就用0来代替,其他情况也如此,小弟下面的语句只实现了每个字段都产生过才可以,也就是如果这个月没有本月入库,那这条记录就不会显示出来了,其他情况也如此,不知道该怎么修改,各位帮帮忙,很急很急,在线等
CREATE TABLE test(分类 char(20),品名 char(20),数量1 float,金额1 money,
数量2 float,金额2 money,数量3 float,金额3 money,数量4 float,金额4 money)
INSERT INTO test(分类,品名,数量1,金额1,数量2,金额2,数量3,金额3,数量4,金额4)
SELECT A1.型号,A1.材料名称,A1.本月前入库总数量-B1.本月前领用总数量+C1.本月前退料总数量
AS 上月结存数量,A1.本月前入库总数量-B1.本月前领用总金额+C1.本月前退料总金额 AS 上月结存金额,
A2.本月入库数量,A2.本月入库金额,B2.本月领用数量,B2.本月领用金额,
A1.本月前入库总数量-B1.本月前领用总数量+C1.本月前退料总数量+A2.本月入库数量-B2.本月领用数量+C2.本月退料数量 AS 本月结存数量,
A1.本月前入库总金额-B1.本月前领用总金额+C1.本月前退料总金额+A2.本月入库金额-B2.本月领用金额+C2.本月退料金额 AS 本月结存金额
FROM (SELECT 型号,材料名称,SUM(合格数量) AS 本月前入库总数量,SUM(金额) AS 本月前入库总金额
FROM inwarehousedetail WHERE 入库单号 IN (SELECT 入库单号 FROM inwarehouse WHERE 入库确认标志='确认'
AND 入库日期<'2003-12-1') GROUP BY 型号,材料名称) AS A1,
(SELECT 型号,材料名称,SUM(合格数量) AS 本月入库数量,SUM(金额) AS 本月入库金额
FROM inwarehousedetail WHERE 入库单号 IN (SELECT 入库单号 FROM inwarehouse WHERE 入库确认标志='确认'
AND 入库日期>='2003-12-1' AND 入库日期<'2004-1-1') GROUP BY 型号,材料名称) AS A2,
(SELECT 型号,品名,SUM(数量) AS 本月前领用总数量,SUM(金额) AS 本月前领用总金额
FROM receivestuffdetail WHERE 领料单号 IN (SELECT 领料单号 FROM receivestuff WHERE 领料确认标志='确认'
AND 领料时间<'2003-12-1') AND 领料仓库='原材料仓库' GROUP BY 型号,品名) AS B1,
(SELECT 型号,品名,SUM(数量) AS 本月领用数量,SUM(金额) AS 本月领用金额
FROM receivestuffdetail WHERE 领料单号 IN (SELECT 领料单号 FROM receivestuff WHERE 领料确认标志='确认'
AND 领料时间>='2003-12-1' AND 领料时间<'2004-1-1') AND 领料仓库='原材料仓库' GROUP BY 型号,品名) AS B2,
(SELECT 型号,品名,SUM(数量) AS 本月前退料总数量,SUM(金额) AS 本月前退料总金额
FROM backstuffdetail WHERE 退料单号 IN (SELECT 退料单号 FROM backstuff WHERE 退料确认标志='确认'
AND 退料时间<'2003-12-1') AND 退料仓库='原材料仓库' GROUP BY 型号,品名) AS C1,
(SELECT 型号,品名,SUM(数量) AS 本月退料数量,SUM(金额) AS 本月退料金额
FROM backstuffdetail WHERE 退料单号 IN (SELECT 退料单号 FROM backstuff WHERE 退料确认标志='确认'
AND 退料时间>='2003-12-1' AND 退料时间<'2004-1-1') AND 退料仓库='原材料仓库' GROUP BY 型号,品名) AS C2
WHERE A1.型号=A2.型号 AND B1.型号=B2.型号 AND C1.型号=C2.型号 AND A1.型号=B1.型号
AND B1.型号=C1.型号 AND A1.材料名称=A2.材料名称 AND B1.品名=B2.品名
AND C1.品名=C2.品名 AND A1.材料名称=B1.品名 AND B1.品名=C1.品名
GROUP BY A1.型号,A1.材料名称,A1.本月前入库总数量,A1.本月前入库总金额,A2.本月入库数量,A2.本月入库金额,
B1.本月前领用总数量,B1.本月前领用总金额,B2.本月领用数量,B2.本月领用金额,C1.本月前退料总数量,
C1.本月前退料总金额,C2.本月退料数量,C2.本月退料金额