SQL2000求最近日期数据行
mssql2000 最近数据行
视图内容:VIEW_GOODSSTORE
goodsid,billdate,STOREID,STORESTATEID
74 ,2011-2-19, 11, ,104
74 ,2011-6-14, 11, ,104
78, 2011-11-11, 12, , 33
91 ,2011-6-19, 11, ,104
91 ,2011-6-19, 11, ,105
91 ,2011-6-19, 11, ,106
结果:
当goodsid相面时,取最大日期的行 (取出来后不要重复的)
goodsid,billdate,STOREID,STORESTATEID
74 ,2011-6-14, 11, ,104
78, 2011-11-11, 12, , 33
91 ,2011-6-19, 11, ,106
[最优解释]
早知道我答了算了。
SELECT *
FROM VIEW_GOODSSTORE a
WHERE EXISTS ( SELECT 1
FROM ( SELECT MAX(billdate) billdate ,
goodsid
FROM VIEW_GOODSSTORE
GROUP BY goodsid
) b
WHERE a.billdate = b.billdate
AND a.goodsid = b.goodsid )
SELECT *
FROM VIEW_GOODSSTORE a
WHERE NOT EXISTS ( SELECT 1
FROM VIEW_GOODSSTORE
WHERE goodsid = a.goodsid
AND billdate > a.billdate )
if object_id('dbo.t1') is not null
drop table t1;
go
create table t1(
goodsid int,
billdate datetime,
STOREID int,
STORESTATEID int
)
insert into t1
select 74,'2011-2-19',11,104
union all
select 74,'2011-6-14',11,104
union all
select 78,'2011-11-11',12,33
union all
select 91,'2011-6-19',11,104
union all
select 91,'2011-6-19',11,105
union all
select 91,'2011-6-19',11,106
select * from t1
select * from (
select goodsid,billdate,storeid,storestateid,row_number() over(partition by goodsid order by billdate,storestateid desc) as rn from t1) tbl
where rn=1