读书人

一个三表复合查询的写法字段不多

发布时间: 2012-09-11 10:49:03 作者: rapoo

求助一个三表复合查询的写法,字段不多
有点表达不清,请各位见图,谢谢。



[解决办法]

SQL code
IF OBJECT_ID(N'[奶粉销售表]') IS NOT NULL DROP TABLE [奶粉销售表]IF OBJECT_ID(N'[玩具销售表]') IS NOT NULL DROP TABLE [玩具销售表]IF OBJECT_ID(N'[客户表]') IS NOT NULL DROP TABLE [客户表]GOCREATE TABLE [奶粉销售表]([客户表ID] varchar(20),[客户姓名] varchar(20),[销售金额] int)CREATE TABLE [玩具销售表]([客户表ID] varchar(20),[客户姓名] varchar(20),[销售金额] int)CREATE TABLE [客户表]([客户表ID] varchar(20),[客户姓名] varchar(20),[联系电话] int)GOinsert into [奶粉销售表]select 'A001','张三',210 union allselect 'A002','李四',135 union allselect 'A001','张三',140insert into [玩具销售表]select 'A002','李四',120 union allselect 'A003','王五',380 union allselect 'A001','张三',110 union allselect 'A003','王五',30 insert into [客户表]select 'A001','张三',111 union allselect 'A002','李四',222 union allselect 'A003','王五',333 union allselect 'A004','赵六',444SELECT a.[客户表ID],a.[客户姓名],ISNULL(b.[奶粉销售金额],0) AS '奶粉销售金额',ISNULL([玩具销售金额],0)AS '玩具销售金额',a.[联系电话] FROM [客户表] aLEFT JOIN (SELECT [客户表ID],SUM([销售金额]) AS '奶粉销售金额' FROM [奶粉销售表] GROUP BY [客户表ID]) bON a.[客户表ID]=b.[客户表ID]LEFT JOIN (SELECT [客户表ID],SUM([销售金额]) AS '玩具销售金额' FROM [玩具销售表] GROUP BY [客户表ID]) cON a.[客户表ID]=c.[客户表ID]/*(3 行受影响)(4 行受影响)(4 行受影响)客户表ID                客户姓名                 奶粉销售金额      玩具销售金额      联系电话-------------------- -------------------- ----------- ----------- -----------A001                 张三                   350         110         111A002                 李四                   135         120         222A003                 王五                   0           410         333A004                 赵六                   0           0           444(4 行受影响)*/
[解决办法]
SQL code
--借用下关将军的数据IF OBJECT_ID(N'[奶粉销售表]') IS NOT NULL DROP TABLE [奶粉销售表]IF OBJECT_ID(N'[玩具销售表]') IS NOT NULL DROP TABLE [玩具销售表]IF OBJECT_ID(N'[客户表]') IS NOT NULL DROP TABLE [客户表]GOCREATE TABLE [奶粉销售表]([客户表ID] varchar(20),[客户姓名] varchar(20),[销售金额] int)CREATE TABLE [玩具销售表]([客户表ID] varchar(20),[客户姓名] varchar(20),[销售金额] int)CREATE TABLE [客户表]([客户表ID] varchar(20),[客户姓名] varchar(20),[联系电话] int)GOinsert into [奶粉销售表]select 'A001','张三',210 union allselect 'A002','李四',135 union allselect 'A001','张三',140insert into [玩具销售表]select 'A002','李四',120 union allselect 'A003','王五',380 union allselect 'A001','张三',110 union allselect 'A003','王五',30 insert into [客户表]select 'A001','张三',111 union allselect 'A002','李四',222 union allselect 'A003','王五',333 union allselect 'A004','赵六',444SELECT         a.[客户表ID],        a.[客户姓名],        ISNULL(b.[奶粉销售金额],0) AS '奶粉销售金额',        ISNULL([玩具销售金额],0)AS '玩具销售金额',        ISNULL(a.[联系电话],0) FROM [客户表] aLEFT JOIN             (SELECT                    [客户表ID],                   SUM([销售金额]) AS '奶粉销售金额'                FROM [奶粉销售表] GROUP BY [客户表ID]) bON a.[客户表ID]=b.[客户表ID]LEFT JOIN            (SELECT                    [客户表ID],                   SUM([销售金额]) AS '玩具销售金额'                FROM [玩具销售表] GROUP BY [客户表ID]) cON a.[客户表ID]=c.[客户表ID] 

读书人网 >SQL Server

热点推荐