求一个sql语句,取历史表上最新的价格和所在的日期

jianglf 2007-07-02 12:04:10
求一条sql语句
有4个字段,名称,价格, 日期 ,单位

a 1.2 07-6-12 ,d
a 1.2 07-6-12 ,d
a 1.1 07-6-11, a
b 3.5 07-6-10, b

如何取到最新的价格和所在的日期和单位 ,如
a 1.2 07-6-12,d
b 3.5 07-6-10 ,b

请注意,相同的日期,相同的名称只要一条就够了
谢谢!
...全文
230 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bqb 2007-07-02
  • 打赏
  • 举报
回复
select distinct * from 表 a (select 名称,max(日期) as 日期 from 表 group by 名称) b
where a.名称=b.名称 and a.日期=b.日期
肥胖的柠檬 2007-07-02
  • 打赏
  • 举报
回复
hellowork(一两清风) 前面加上个distinct就可以了
肥胖的柠檬 2007-07-02
  • 打赏
  • 举报
回复
create table #aa( 名称 varchar(5),价格 varchar(5),日期 datetime,单位 varchar(5))
insert into #aa
select 'a', '1.2', '07-6-12' ,'d' union all
select 'a', '1.2', '07-6-12' ,'d' union all
select 'a', '1.1', '07-6-11' ,'a' union all
select 'b', '3.1', '07-6-10' ,'b'

select distinct * from #aa a where
not exists(select 1 from #aa b where a.名称=b.名称 and a.日期<日期)

drop table #aa


(所影响的行数为 4 行)

名称 价格 日期 单位
----- ----- ------------------------------------------------------ -----
a 1.2 2007-06-12 00:00:00.000 d
b 3.1 2007-06-10 00:00:00.000 b

(所影响的行数为 2 行)
hellowork 2007-07-02
  • 打赏
  • 举报
回复
----方法1:
select * from table as a where not exists(select 1 from table where 名称=a.名称 and 日期 > a.日期)

----方法2:
select * from table as a where 日期=(select max(日期) from table where 名称=a.名称)
jianglf 2007-07-02
  • 打赏
  • 举报
回复
非常谢谢以上朋友们!!!!!请接分!!

34,576

社区成员

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

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