求助sqlserver语句!
表名:r
里面有字段 地域,时间,商品价格, (商品名称是字段名称直接填写价格即可。)
我现在要查出 每个地域最新时间某个商品的价格,商品为可选,时间和地域不可选。要怎么查?急~~~
[解决办法]
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.09720鼠标(20)
*/