刚才提了一个问题50分,很多人给我回答.我已经结贴,在此表示感谢.
现在我遇到的问题在原来的基础上又增加了一些难度,希望大家给予帮助.表1 cangku
id  产品名称 表2 xiaoshou  
id  产品id  数量 单价 总额 销售日期现在我要通过联合查询实现以下功能产品名称 销售数量 销售总额  该产品最后一次销售日期
  要求按照 销售总额进行排序,或者按照最后一次销售日期进行排序,不管有没有销售记录,都要列出所有产品的名称.请问这样的功能sql 的联合查询语句该怎么写? 

解决方案 »

  1.   


    select  
          A.产品名称,
          sum(a.数量) as 销售数量,
          sum(A.总额) as 销售总额,
          max(销售日期) as 该产品最后一次销售日期
    from cangku as A
          left join xiaoshou as B on A.id=B.产品id
    group by A.产品名称
    order by sum(A.总额) desc
      

  2.   

    select  a.产品名称 ,b.销售数量 ,b.总额 as  销售总额,c.销售日期 as 该产品最后一次销售日期
    from cangku a
    left join
    (  select * 
       from xiaoshou c
       where not exists(select 1
                        from xiaoshou 
                        where 产品id = c.产品id and 销售日期 < c.销售日期)
    ) b
    on a.id = b.产品id 
               
    id  产品名称 表2 xiaoshou
      

  3.   

    declare @cangku table(id int, 产品名称 varchar(10) )declare @xiaoshou  table(id int,产品id int, 数量 int,单价 int,总额 int,销售日期 datetime)
    insert @cangku select 1,'test'insert @xiaoshou select 1,1,1,10,10,'2001-01-01' union allselect 1,1,1,15,15,'2001-01-02'select  a.产品名称 ,b.数量 ,b.总额 as  销售总额,b.销售日期 as 该产品最后一次销售日期
    from @cangku a
    left join
    (  select * 
       from @xiaoshou c
       where not exists(select 1
                        from @xiaoshou 
                        where 产品id = c.产品id and 销售日期 > c.销售日期)
    ) b
    on a.id = b.产品id 
    /*
    产品名称       数量          销售总额        该产品最后一次销售日期                                            
    ---------- ----------- ----------- ------------------------------------------------------ 
    test       1           15          2001-01-02 00:00:00.000*/
      

  4.   

    -----上面是按销售日期 ,这个是销售总额进行排序
    declare @cangku table(id int, 产品名称 varchar(10) )declare @xiaoshou  table(id int,产品id int, 数量 int,单价 int,总额 int,销售日期 datetime)
    insert @cangku select 1,'test' union select 2,'test2'insert @xiaoshou select 1,1,1,10,10,'2001-01-04' union allselect 1,1,1,15,15,'2001-01-02'  union allselect 1,1,1,22,22,'2001-01-01'select  a.产品名称 ,b.数量 ,b.总额 as  销售总额,b.销售日期 as 该产品最后一次销售日期
    from @cangku a
    left join
    (  select * 
       from @xiaoshou c
       where not exists(select 1
                        from @xiaoshou 
                        where 产品id = c.产品id and 总额 > c.总额)
    ) b
    on a.id = b.产品id 
    /*
    产品名称       数量          销售总额        该产品最后一次销售日期                                            
    ---------- ----------- ----------- ------------------------------------------------------ 
    test       1           22          2001-01-01 00:00:00.000
    test2      NULL        NULL        NULL*/
      

  5.   

    select 产品名称,sum(b.数量)as [销售数量],
    sum(b.数量*b.单价)as [销售总额],
    [该产品最后一次销售日期]=(select max(销售日期) from xiaoshou where 产品id =b.产品id  )
    from 
    cangku a
    join 
    xiaoshou b
    on a.id=b.产品id 
      

  6.   

    --改一下
    select  
          A.产品名称,
          sum(B.数量) as 销售数量,
          sum(B.总额) as 销售总额,
          max(B.销售日期) as 该产品最后一次销售日期
    from cangku as A
          left join xiaoshou as B on A.id=B.产品id
    group by A.产品名称
    order by sum(B.总额) desc
      

  7.   

    谢谢各位.我想happyflystone(无枪的狙击手)您给我的回复一定很精彩,但是我水平有限,你给我的我都用不上.