日期:2014-05-18  浏览次数:20468 次

sql 联合查询并找出最大值和排序
刚才提了一个问题50分,很多人给我回答.我已经结贴,在此表示感谢.
现在我遇到的问题在原来的基础上又增加了一些难度,希望大家给予帮助.

表1   cangku
id     产品名称  

表2   xiaoshou    
id     产品id     数量   单价   总额   销售日期

现在我要通过联合查询实现以下功能

产品名称   销售数量   销售总额     该产品最后一次销售日期
   

要求按照   销售总额进行排序,或者按照最后一次销售日期进行排序,不管有没有销售记录,都要列出所有产品的名称.

请问这样的功能sql   的联合查询语句该怎么写?  



------解决方案--------------------
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 all

select 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

*/