自己实在不会写,所以还是只有麻烦各位大神了.
本帖最后由 u010083176 于 2013-03-30 23:27:32 编辑 A表结构:Number为自增长列
Number,GoodsName,Bopomofo_Ab
1 小米 XM
2 大米 DM
3 小麦 XM
4 大麦 DM
5 高梁 GL
6 土豆 TD
7 玉米 YM
ID,DJBID,GoodsName,SpecType,Provider,remarks,Quantity,UnitPrice
1 1 小米 广东 阿里 良 10000 3.00
2 1 小米 山东 淘宝 优 20000 2.50
3 2 大米 山东 淘宝 良 5000 2.00
4 2 大米 吉林 阿里 良 5000 4.00
5 5 高梁 安徽 易趣 优 10000 2.00
6 4 大麦 四川 当当 差 4000 2.00
7 6 土豆 黑龙江 京东 优 20000 1.00
ID,DJBID,KCID,GoodsName,Provider,SpecType,remarks_kc,Quantity_ck1,UnitPrice,
1 1 2 小米 山东 淘宝 优 1000 2.50
2 5 5 高梁 安徽 易趣 优 1000 2.00
3 1 1 小米 广东 阿里 良 1000 3.00
4 6 7 土豆 黑龙江 京东 优 1000 1.00
5 6 7 土豆 黑龙江 京东 优 1000 1.00
ID,DJBID,KCID,GoodsName,Provider,SpecType,remarks_kc,Quantity_ck2,UnitPrice,
1 2 3 大米 山东 淘宝 良 900 2.00
2 1 1 小米 广东 阿里 良 1000 3.00
3 5 5 高梁 安徽 易趣 优 1000 2.00
4 5 5 高梁 安徽 易趣 优 1000 2.00
ID,DJBID,KCID,GoodsName,Provider,SpecType,remarks_kc,Quantity_ck3,UnitPrice,
1 6 7 土豆 黑龙江 京东 优 1000 1.00
2 1 2 小米 山东 淘宝 优 1000 2.50
3 1 2 小米 山东 淘宝 优 1000 2.50
4 1 2 小米 山东 淘宝 优 1000 2.50
5 1 2 小米 山东 淘宝 优 1000 2.50
SELECT b.*,a.Bopomofo_Ab,c.quantity_ck1,d.quantity_ck2,e.quantity_ck3 ,(B.Quantity-(ISNULL(C.quantity_ck1,0)+ISNULL(D.quantity_ck2,0)+ISNULL(E.quantity_ck3,0)) )AS outquantity_out ?FROM B left JOIN A ON a.number= b.DJBID ? LEFT JOIN C ON b.ID=c.KCID AND a.number= c.DJBID ? LEFT JOIN D ON b.ID=D.KCID AND a.number= D.DJBID ? LEFT JOIN E ON b.ID=E.KCID AND a.number= E.DJBID
B表.ID,B表.DJBID,B表.GoodsName,B表.SpecType,B表.Provider,B表.remarks,B表.Quantity,B表.UnitPrice,A表.Bopomofo_Ab,C表.quantity_ck1,D表.quantity_ck2,E表.quantity_ck3 outquantity_out
1 1 小米 广东 阿里 良 10000 3.00 XM 1000 1000 NULL 8000
2 1 小米 山东 淘宝 优 20000 2.50 XM 1000 NULL 4000 15000
3 2 大米 山东 淘宝 良 5000 2.00 DM NULL 900 NULL 4100
4 2 大米 吉林 阿里 良 5000 4.00 DM NULL NULL NULL 5000
5 5 高梁 安徽 易趣 优 10000 2.00 GL 1000 2000 NULL 7000
6 4 大麦 四川 当当 差 4000 2.00 XM NULL NULL NULL 4000
7 6 土豆 黑龙江 京东 优 20000 1.00 TD 2000 NULL 1000 17000
----------------------------
-- Author :DBA_Huangzj(發糞塗牆)
-- Date :2013-03-31 00:36:59
-- Version:
-- Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (Intel X86)
--Jun 17 2011 00:57:23
--Copyright (c) Microsoft Corporation
--Enterprise Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)
--
----------------------------
--> 测试数据:[A]
if object_id('[A]') is not null drop table [A]
go
create table [A]([Number] int,[GoodsName] varchar(4),[Bopomofo_Ab] varchar(2))
insert [A]
select 1,'小米','XM' union all
select 2,'大米','DM' union all
select 3,'小麦','XM' union all
select 4,'大麦','DM' union all
select 5,'高梁','GL' union all
select 6,'土豆','TD' union all
select 7,'玉米','YM'
--GoodsName,SpecType,Provider,remarks
if object_id('[B]') is not null drop table [B]
go
create table [B]([ID] int,[DJBID] int,[GoodsName] varchar(4),[SpecType] varchar(6),[Provider] varchar(4),[remarks] varchar(2),[Quantity] int,[UnitPrice] numeric(3,2))
insert [B]
select 1,1,'小米','广东','阿里','良',10000,3.00 union all
select 2,1,'小米','山东','淘宝','优',20000,2.50 union all
select 3,2,'大米','山东','淘宝','良',5000,2.00 union all
select 4,2,'大米','吉林','阿里','良',5000,4.00 union all
select 5,5,'高梁','安徽','易趣','优',10000,2.00 union all
select 6,4,'大麦','四川','当当','差',4000,2.00 union all
select 7,6,'土豆','黑龙江','京东','优',20000,1.00
if object_id('[C]') is not null drop table [C]
go
create table [C]([ID] int,[DJBID] int,[KCID] int,[GoodsName] varchar(4),[Provider] varchar(6),[SpecType] varchar(4),[remarks_kc] varchar(2),[Quantity_ck1] int,[UnitPrice] numeric(3,2))
insert [C]
select 1,1,2,'小米','山东','淘宝','优',1000,2.50 union all
select 2,5,5,'高梁','安徽','易趣','优',1000,2.00 union all
select 3,1,1,'小米','广东','阿里','良',1000,3.00 union all
select 4,6,7,'土豆','黑龙江','京东','优',1000,1.00 union all
select 5,6,7,'土豆','黑龙江','京东','优',1000,1.00
if object_id('[D]') is not null drop table [D]
go
create table [D]([ID] int,[DJBID] int,[KCID] int,[GoodsName] varchar(4),[Provider] varchar(4),[SpecType] varchar(4),[remarks_kc] varchar(2),[Quantity_ck2] int,[UnitPrice] numeric(3,2))
insert [D]
select 1,2,3,'大米','山东','淘宝','良',900,2.00 union all
select 2,1,1,'小米','广东','阿里','良',1000,3.00 union all
select 3,5,5,'高梁','安徽','易趣','优',1000,2.00 union all
select 4,5,5,'高梁','安徽','易趣','优',1000,2.00
if object_id('[E]') is not null drop table [E]
go
create table [E]([ID] int,[DJBID] int,[KCID] int,[GoodsName] varchar(4),[Provider] varchar(6),[SpecType] varchar(4),[remarks_kc] varchar(2),[Quantity_ck3] int,[UnitPrice] numeric(3,2))
insert [E]
select 1,6,7,'土豆','黑龙江','京东','优',1000,1.00 union all
select 2,1,2,'小米','山东','淘宝','优',1000,2.50 union all
select 3,1,2,'小米','山东','淘宝','优',1000,2.50 union all
select 4,1,2,'小米','山东','淘宝','优',1000,2.50 union all
select 5,1,2,'小米','山东','淘宝','优',1000,2.50
--------------开始查询--------------------------
SELECT id,djbid,goodsname,spectype,PROVIDER,remarks,SUM(quantity)quantity,unitprice,Bopomofo_Ab,quantity_ck1,quantity_ck2,quantity_ck3,SUM(outquantity_out)outquantity_out
FROM (
SELECT b.*,a.Bopomofo_Ab
,c.quantity_ck1
,d.quantity_ck2
,e.quantity_ck3
,(B.Quantity-(ISNULL(C.quantity_ck1,0)+ISNULL(D.quantity_ck2,0)+ISNULL(E.quantity_ck3,0)) )AS outquantity_out
FROM B left JOIN A ON a.number= b.DJBID
LEFT JOIN C ON b.ID=c.KCID AND a.number= c.DJBID
LEFT JOIN D ON b.ID=D.KCID AND a.number= D.DJBID
LEFT JOIN E ON b.ID=E.KCID AND a.number= E.DJBID
)a
GROUP BY id,djbid,goodsname,spectype,PROVIDER,remarks,unitprice,Bopomofo_Ab,quantity_ck1,quantity_ck2,quantity_ck3
----------------结果----------------------------
/*
id djbid goodsname spectype PROVIDER remarks quantity unitprice Bopomofo_Ab quantity_ck1 quantity_ck2 quantity_ck3 outquantity_out
----------- ----------- --------- -------- -------- ------- ----------- --------------------------------------- ----------- ------------ ------------ ------------ ---------------
1 1 小米 广东 阿里 良 10000 3.00 XM 1000 1000 NULL 8000
2 1 小米 山东 淘宝 优 80000 2.50 XM 1000 NULL 1000 72000
3 2 大米 山东 淘宝 良 5000 2.00 DM NULL 900 NULL 4100
4 2 大米 吉林 阿里 良 5000 4.00 DM NULL NULL NULL 5000
5 5 高梁 安徽 易趣 优 20000 2.00 GL 1000 1000 NULL 16000
6 4 大麦 四川 当当 差 4000 2.00 DM NULL NULL NULL 4000
7 6 土豆 黑龙江 京东 优 40000 1.00 TD 1000 NULL 1000 36000
*/