日期:2014-05-19  浏览次数:20622 次

求一条简单的SQL语句!
表结构:
分项名称     完成时间       分项结果  
    A               2007-1-1           AAAAAA
    A               2007-1-2           BBBBBB


我想要得到下面的结果,要怎么写?
分项名称     完成时间       分项结果       最终结果
    A               2007-1-1           AAAAAA         BBBBBB
    A               2007-1-2           BBBBBB         BBBBBB

------解决方案--------------------
最终结果列怎么来的,固定的还是分项结果中最大的啊?
------解决方案--------------------
Select
A.*,
(Select TOP 1 分项结果 From 表 Where 分项名称 = A.分项名称 Order By 完成时间 Desc) As 最终结果
From
表 A
------解决方案--------------------
select a.*,b.分项结果 最终结果
from tb a
inner join (select 分项名称,max(完成时间) mx from tb group by 分项名称) c
on c.分项名称=a.分项名称
inner join tb b
on b.分项时间=mx and b.分项名称=c.分项名称
------解决方案--------------------
create table tb(
分项名称 varchar(1),
完成时间 datetime,
分项结果 varchar(10)
)
insert tb
select 'A ', '2007-01-01 ', 'AAAAAA ' union all
select 'A ', '2007-01-02 ', 'BBBBBB '

select tmp.分项名称,convert(varchar(10),tmp.完成时间,120)as 完成时间,tmp.分项结果,
(select top 1 分项结果 from tb where 分项名称=tmp.分项名称 order by 完成时间 desc)as 最终结果
from tb tmp

--result:
A 2007-01-01 AAAAAA BBBBBB
A 2007-01-02 BBBBBB BBBBBB