日期:2014-05-17 浏览次数:20608 次
select a.*
from tb a
where not exists(select 1 from tb b where a.地域=b.地域 and a.时间>b.时间)
或者:
select *
from (select *,rn=ROW_NUMBER() over(partition by 地域 order by 时间 desc) from tb)t
where rn=1
CREATE TABLE r(地域 NVARCHAR(100), 商品 NVARCHAR(100), 时间 DATETIME, 商品价格 INT)
INSERT r
SELECT '北京', '鼠标', GETDATE()-2, 10 UNION ALL
SELECT '北京', '鼠标', GETDATE()-1, 20 UNION ALL
SELECT '北京', '键盘', GETDATE()-2, 30
--查询所有地域,某个(或全部)商品,最新时间的价格
DECLARE @商品 NVARCHAR(255)
SET @商品 = '鼠标' --如果想查全部商品,就传个百分号: T @商品 = '%'
SELECT B.*, 这个是楼主想要的字段吗=(a.商品+'('+LTRIM(b.商品价格)+')') FROM
(SELECT DISTINCT 地域, 商品 FROM r WHERE 商品 LIKE @商品) a
CROSS APPLY
(SELECT TOP(1) * FROM r WHERE r.地域 = a.地域 AND r.商品 = a.商品 ORDER BY 时间 DESC) b
/*
地域 商品 时间 商品价格 这个是楼主想要的字段吗
北京 鼠标 2013-08-19 15:08:40.097 20 鼠标(20)
*/