首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sqlserver语句

2013-08-25 
求助sqlserver语句!表名:r里面有字段地域,时间,商品价格,(商品名称是字段名称直接填写价格即可。)我现在要

求助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)
*/

热点排行