有两个表CANGKU仓库表:代号,名称,型号,数量,产品类型(底板和配件)、类型(对应出库、入库、损耗和修板)
DBLB底板列表:对应仓库表中的底板中使用的配件信息
如:CANGKU 代号 名称 型号 数量 产品类型 类型
10001 音乐狗 J1021 100 底板 出库
100110 电阻 1000M 20 配件 损耗 DBLB 代号 名称 型号 配件代号 配件名称 配件型号 数量
10001 音乐狗 J1021 100110 电阻 DZ1001 2
10001 音乐狗 J1023 100210 电容 DZ1022 3现在我需要统计出总共用去电阻的数量:包括总数量:出库100×2+20 及分类:成品耗品(100×2) 损耗20
即:代号 名称 数量 成品耗品 损耗
100110 电阻 220 200 20
请问SQL语句应如何写?
DBLB底板列表:对应仓库表中的底板中使用的配件信息
如:CANGKU 代号 名称 型号 数量 产品类型 类型
10001 音乐狗 J1021 100 底板 出库
100110 电阻 1000M 20 配件 损耗 DBLB 代号 名称 型号 配件代号 配件名称 配件型号 数量
10001 音乐狗 J1021 100110 电阻 DZ1001 2
10001 音乐狗 J1023 100210 电容 DZ1022 3现在我需要统计出总共用去电阻的数量:包括总数量:出库100×2+20 及分类:成品耗品(100×2) 损耗20
即:代号 名称 数量 成品耗品 损耗
100110 电阻 220 200 20
请问SQL语句应如何写?
FROM CANGKU, DBLB
WHERE DBLB.p_codes = '100110' and CANGKU.codes <> '100110';
FROM CANGKU, DBLB
WHERE DBLB.p_codes = '100110' and CANGKU.codes = '10001';
其中:
(select sum(CANGKU.counts) from CANGKU where CANGKU.codes = '100110' and CANGKU.types = '损耗') AS 损耗是获得CANGKU表中编号为100110,类型是损耗的所有配件的总量。
CANGKU.counts * DBLB.counts 是获得DBLB表中的底板所消耗的配件的总量。WHERE DBLB.p_codes = '100110'是限定CANGKU.counts * DBLB.counts获得的是底板所消耗的'100110'配件的总量
and CANGKU.codes = '10001' 是限定在CANGKU.counts * DBLB.counts中只用编号为10001的做基数。
(select
case
where b.代号 is null then a.代号
else b.配件代号
end as 代号,case
when a.类型='出库' then a.数量*isnull(b.数量,1)
else 0
end as 成品耗品,case
when a.类型='损耗' then a.数量*isnull(b.数量,1)
else 0
end as 损耗,from cangku a
left join dblb b on a.代号=b.代号
) k
group by 代号//写好了,不过没经过测试,楼主试试看