表1:产品资料表产品编号  产品名称  销售价格  销售提成
001         AA        100        1
002         BB        100        2
003         CC        123        3
004         DD        345        4
005         EE        435        5-----------------------------------------------表2:员工销售表
单据号  销售时间              产品编号  销售数量  销售员工编号
XS001   2009-11-7 17:07:00       001        1         YG001
XS002   2009-11-8 12:07:00       002        2         YG001
XS003   2009-11-9 19:07:00       001        1         YG002
XS004   2009-11-10 14:07:00      004        1         YG003
XS005   2009-11-11 18:07:00      001        3         YG001-----------------------------------------------
现在希望通过查询得到的结果是:只查询员工编号为YG001的员工销售的记录,没有销售的产品也显示出来,销售数量显示为0产品编号  产品名称  销售价格  销售提成  合计销售数量
001         AA        100        1           4
002         BB        100        2           2
003         CC        123        3           0
004         DD        345        4           0
005         EE        435        5           0

解决方案 »

  1.   


    额 我用了 LEFT JOIN , 但结果只显示跟销售表相关的结果类似这样
      

  2.   

    用LEFT JOIN 后产品编号  产品名称  销售价格  销售提成  合计销售数量 
    001        AA        100        1          4 
    002        BB        100        2          2 刚才忘了粘贴
      

  3.   

    select
      a.*,isnull(b.num,0) as 合计销售数量 
    from
      a
    left join
      (select 单据号,count(1) as num from b group by 单据号)b
    on
      a.单据号=b.单据号
      

  4.   

    ---测试数据---
    if object_id('[ta]') is not null drop table [ta]
    go
    create table [ta]([产品编号] varchar(3),[产品名称] varchar(2),[销售价格] int,[销售提成] int)
    insert [ta]
    select '001','AA',100,1 union all
    select '002','BB',100,2 union all
    select '003','CC',123,3 union all
    select '004','DD',345,4 union all
    select '005','EE',435,5
    if object_id('[tb]') is not null drop table [tb]
    go
    create table [tb]([单据号] varchar(5),[销售时间] datetime,[产品编号] varchar(3),[销售数量] int,[销售员工编号] varchar(5))
    insert [tb]
    select 'XS001','2009-11-7 17:07:00','001',1,'YG001' union all
    select 'XS002','2009-11-8 12:07:00','002',2,'YG001' union all
    select 'XS003','2009-11-9 19:07:00','001',1,'YG002' union all
    select 'XS004','2009-11-10 14:07:00','004',1,'YG003' union all
    select 'XS005','2009-11-11 18:07:00','001',3,'YG001'
     
    ---查询---
    select ta.*,isnull(tb.销售数量,0) as 合计销售数量 
    from ta
    left join
    (select 产品编号,sum(销售数量) as 销售数量,销售员工编号 from tb where 销售员工编号='YG001' group by 产品编号,销售员工编号) tb
    on ta.产品编号=tb.产品编号 ---结果---
    产品编号 产品名称 销售价格        销售提成        合计销售数量      
    ---- ---- ----------- ----------- ----------- 
    001  AA   100         1           4
    002  BB   100         2           2
    003  CC   123         3           0
    004  DD   345         4           0
    005  EE   435         5           0(所影响的行数为 5 行)
      

  5.   

    --修改
    ----------------------------------------------------------------
    -- Author  :fredrickhu(我是小F,向高手学习)
    -- Date    :2009-12-11 12:06:54
    -- Version:
    --      Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) 
    -- Nov 24 2008 13:01:59 
    -- Copyright (c) 1988-2005 Microsoft Corporation
    -- Developer Edition on Windows NT 5.2 (Build 3790: Service Pack 1)
    --
    ----------------------------------------------------------------
    --> 测试数据:[a]
    if object_id('[a]') is not null drop table [a]
    go 
    create table [a]([产品编号] varchar(3),[产品名称] varchar(2),[销售价格] int,[销售提成] int)
    insert [a]
    select '001','AA',100,1 union all
    select '002','BB',100,2 union all
    select '003','CC',123,3 union all
    select '004','DD',345,4 union all
    select '005','EE',435,5
    --> 测试数据:[b]
    if object_id('[b]') is not null drop table [b]
    go 
    create table [b]([单据号] varchar(5),[销售时间] datetime,[产品编号] varchar(3),[销售数量] int,[销售员工编号] varchar(5))
    insert [b]
    select 'XS001','2009-11-7 17:07:00','001',1,'YG001' union all
    select 'XS002','2009-11-8 12:07:00','002',2,'YG001' union all
    select 'XS003','2009-11-9 19:07:00','001',1,'YG002' union all
    select 'XS004','2009-11-10 14:07:00','004',1,'YG003' union all
    select 'XS005','2009-11-11 18:07:00','001',3,'YG001'
    --------------开始查询--------------------------
    select
      a.*,isnull(b.num,0) as 合计销售数量 
    from
      a
    left join
      (select 产品编号,count(1) as num from b group by 产品编号)b
    on
      a.产品编号=b.产品编号
    ----------------结果----------------------------
    /* 产品编号 产品名称 销售价格        销售提成        合计销售数量
    ---- ---- ----------- ----------- -----------
    001  AA   100         1           3
    002  BB   100         2           1
    003  CC   123         3           0
    004  DD   345         4           1
    005  EE   435         5           0(5 行受影响)
    */
      

  6.   

    ----------------------------------------------------------------
    -- Author  :fredrickhu(我是小F,向高手学习)
    -- Date    :2009-12-11 12:06:54
    -- Version:
    --      Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) 
    -- Nov 24 2008 13:01:59 
    -- Copyright (c) 1988-2005 Microsoft Corporation
    -- Developer Edition on Windows NT 5.2 (Build 3790: Service Pack 1)
    --
    ----------------------------------------------------------------
    --> 测试数据:[a]
    if object_id('[a]') is not null drop table [a]
    go 
    create table [a]([产品编号] varchar(3),[产品名称] varchar(2),[销售价格] int,[销售提成] int)
    insert [a]
    select '001','AA',100,1 union all
    select '002','BB',100,2 union all
    select '003','CC',123,3 union all
    select '004','DD',345,4 union all
    select '005','EE',435,5
    --> 测试数据:[b]
    if object_id('[b]') is not null drop table [b]
    go 
    create table [b]([单据号] varchar(5),[销售时间] datetime,[产品编号] varchar(3),[销售数量] int,[销售员工编号] varchar(5))
    insert [b]
    select 'XS001','2009-11-7 17:07:00','001',1,'YG001' union all
    select 'XS002','2009-11-8 12:07:00','002',2,'YG001' union all
    select 'XS003','2009-11-9 19:07:00','001',1,'YG002' union all
    select 'XS004','2009-11-10 14:07:00','004',1,'YG003' union all
    select 'XS005','2009-11-11 18:07:00','001',3,'YG001'
    --------------开始查询--------------------------
    select
      a.*,isnull(b.num,0) as 合计销售数量 
    from
      a
    left join
      (select 产品编号,sum(销售数量) as num from b where  销售员工编号='YG001' group by 产品编号)b
    on
      a.产品编号=b.产品编号
    ----------------结果----------------------------
    /* 产品编号 产品名称 销售价格        销售提成        合计销售数量
    ---- ---- ----------- ----------- -----------
    001  AA   100         1           4
    002  BB   100         2           2
    003  CC   123         3           0
    004  DD   345         4           0
    005  EE   435         5           0(5 行受影响)
    */