日期:2014-05-18 浏览次数:20604 次
if not object_id('tb') is null drop table tb Go Create table tb([date] nvarchar(5),[nums] int) Insert tb select N'12-11',37 union all select N'12-12',59 union all select N'12-13',89 Go Select *, (select top 1 [nums] from tb where [date]<t.[date] order by [date] desc)[nums of yeseterday] from tb t /* date nums nums of yeseterday ----- ----------- ------------------ 12-11 37 NULL 12-12 59 37 12-13 89 59 (3 row(s) affected) */
------解决方案--------------------
if OBJECT_ID('tb') is not null drop table tb go create table tb ( date varchar(10), nums int ) insert into tb select '12-11',37 union all select '12-12',59 union all select '12-13',89 ;with cte as ( select ROW_NUMBER()over(order by date) as rn,* from tb ) select a.date,a.nums,isnull(b.nums,'') as [nums of yeseterday] from cte a left join cte b on a.rn=b.rn+1 order by a.date ---------------- date nums nums of yeseterday 12-11 37 0 12-12 59 37 12-13 89 59