请教一个select语句的写法

LinuxCard 2016-04-07 12:11:06
表结构如下:fee(仓库编号,生效日期,费率)


仓库编号 生效日期 费率
1 2015-01-01 0.1
1 2015-02-02 0.2
2 2015-01-01 0.4

现在想查询每个仓库的最新的费率,想得到的如下的效果
仓库编号 生效日期 费率
1 2015-02-02 0.2
2 2015-01-01 0.4


请问,这样的语句应该怎么写比较好呢?
...全文
92 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 版主 2016-04-07
  • 打赏
  • 举报
回复
;with as t (
	SELECT ROW_NUMBER() OVER (PARTITION BY [仓库编号] ORDER BY [生效日期] DESC) as rid,* FROM fee
)
SELECT 仓库编号,生效日期,费率 FROM t WHERE rid=1
山巅客 2016-04-07
  • 打赏
  • 举报
回复
select * from free where (仓库编号,生效日期) in ( select 仓库编号,max(生效日期) from free group by 仓库编号 )
Ekun_sky 2016-04-07
  • 打赏
  • 举报
回复
with fee(仓库编号,生效日期,费率) as (
select 1,'2015-01-01',0.1 union all
select 1,'2015-02-02', 0.2 union all
select 2,' 2015-01-01', 0.4)

select 仓库编号,生效日期,费率 from 
(select  ROW_NUMBER()over(partition by 仓库编号 order by 生效日期 desc) as aid,* from fee) as a
where a.aid=1

/*
仓库编号 生效日期 费率
1	2015-02-02	0.2
2	 2015-01-01	0.4
*/

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧