首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

带汇总的SQL语句,如何写

2013-04-02 
带汇总的SQL语句,怎么写?A表结构:Number为自增长列Number,GoodsName,Bopomofo_Ab1小米XM2大米DM3小麦XM4大

带汇总的SQL语句,怎么写?
A表结构:Number为自增长列

Number,GoodsName,Bopomofo_Ab
1       小米       XM
2       大米       DM
3       小麦       XM
4       大麦       DM
5       高梁       GL
6       土豆       TD
7       玉米       YM

B表结构:ID为自增长列,DJBID为A表Number
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

C表结构:ID为自增长列,DJBID为A表Numbe,KCID为B表ID
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     小米      广东        阿里      良           10000      3.00

D表结构:ID为自增长列,DJBID为A表Numbe,KCID为B表ID
ID,DJBID,KCID,GoodsName,Provider,SpecType,remarks_kc,Quantity_ck2,UnitPrice,
1   2      3     大米      山东       淘宝      良          900        2.00


2   1      1     小米      广东       阿里      良          1000       3.00


E表结构:ID为自增长列,DJBID为A表Numbe,KCID为B表ID
ID,DJBID,KCID,GoodsName,Provider,SpecType,remarks_kc,Quantity_ck3,UnitPrice,
1   6     7     土豆      黑龙江      京东      优           1000       1.00
2   1     2     小米      山东        淘宝      优           1000       2.50
 
通过以上A表,B表,C表,D表,E表,得到用Grdview显示出来如下结果,这条SQL语句怎么写呢?
outquantity_out字段是:B表.Quantity-(C表.quantity_ck1+D表.quantity_ck2+E表.quantity_ck3)

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          1000          18000
  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                NULL          NULL          9000
  6      4           大麦           四川        当当          差        4000          2.00           XM                NULL                NULL          NULL          4000
  7      6           土豆           黑龙江      京东          优        20000         1.00           TD                NULL                NULL          1000          19000


[解决办法]
擦类,每次都是这么多表
你不是每个问题都要来问吧。
自己动手写写,要不然再过10年,在遇到这个问题,你还是发帖问
[解决办法]
---------------------------- 
-- Author  :DBA_Huangzj(發糞塗牆) 
-- Date    :2013-03-29 00:49:07 
-- 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'
  
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(4),[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,'小米','广东','阿里','良',10000,3.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 
  
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 
--------------开始查询-------------------------- 
  
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 
----------------结果---------------------------- 
/*  
ID          DJBID       GoodsName SpecType Provider remarks Quantity    UnitPrice                               Bopomofo_Ab quantity_ck1 quantity_ck2 quantity_ck3 
----------- ----------- --------- -------- -------- ------- ----------- --------------------------------------- ----------- ------------ ------------ ------------ 


1           1           小米        广东       阿里       良       10000       3.00                                    XM          10000        1000         NULL
2           1           小米        山东       淘宝       优       20000       2.50                                    XM          1000         NULL         1000 
3           2           大米        山东       淘宝       良       5000        2.00                                    DM          NULL         900          NULL
4           2           大米        吉林       阿里       良       5000        4.00                                    DM          NULL         NULL         NULL
5           5           高梁        安徽       易趣       优       10000       2.00                                    GL          1000         NULL         NULL
6           4           大麦        四川       当当       差       4000        2.00                                    DM          NULL         NULL         NULL


7           6           土豆        黑龙江      京东       优       20000       1.00                                    TD          NULL         NULL         1000 
  
(7 行受影响) 
*/

热点排行