紧急请教一个不容易实现的SQL语句!

huagou 2004-08-10 09:09:09
一个表view1里有两个字段id和date,可能有些纪录是重复的。
date是四位年份和两位月份。

id date
1 200312
2 200311
3 200310
4 200307
5 200302
…… ……



现在想查询出 id,date:对于重复的记录,取出其date值的末两位的最大的那条纪录;唯一的纪录则显示该纪录。
...全文
243 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
胖河马 2004-08-10
  • 打赏
  • 举报
回复
SELECT id, Max(date) FROM 表 GROUP BY id
BubbleInDiamond 2004-08-10
  • 打赏
  • 举报
回复
大灰狼的SQL水平……

上面两句第一句查出了id重复date不重复的语句

第二句根本是错的
mind_1220 2004-08-10
  • 打赏
  • 举报
回复
用刚才的那个Sql不能实现吗?
1 200312
2 200308
3 200310
2 200311
4 200307
3 200307
5 200302

查询结果:

1 200312
2 200311
3 200310
4 200307
5 200302
huagou 2004-08-10
  • 打赏
  • 举报
回复
大灰狼,select distinct ID,MAX(Date) from tabname

这种聚合语句只能返回一条记录。

我想返回每个ID的纪录。

请问有好的方法吗?
mind_1220 2004-08-10
  • 打赏
  • 举报
回复
都说过了date 要用数字类型不然不行! 我觉得上面的语句是没有问题的!
顶多这样
select distinct ID,date from tabname order by date desc

不然这样呢
select distinct ID,MAX(Date) from tabname
huagou 2004-08-10
  • 打赏
  • 举报
回复
谢谢 BubbleInDiamond(钻石里的泡泡)

你说的很对啊,大灰狼的两句都不能得到预定的结果。
huagou 2004-08-10
  • 打赏
  • 举报
回复
谢谢 BubbleInDiamond(钻石里的泡泡)

你说的很对啊,大灰狼的两句都不能得到只能的结果。
BubbleInDiamond 2004-08-10
  • 打赏
  • 举报
回复
楼主的问题有类似的,我没见过一条查询可以解决的,都是使用临时表好象
BubbleInDiamond 2004-08-10
  • 打赏
  • 举报
回复
mind_1220(大灰狼) ( ) 的select distinct ID from tabname order by date desc

如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中。

select top 1 ID from tabName order by date desc 查询结果1:都是错的
huagou 2004-08-10
  • 打赏
  • 举报
回复
谢谢,大灰狼。但是你的语句不行啊。
我在结果中返回了所有ID对应的(date最大的那条)记录。
uscool 2004-08-10
  • 打赏
  • 举报
回复
呵呵!正如楼上所述,使用distinct就可达到目的!
huagou 2004-08-10
  • 打赏
  • 举报
回复
不要想当然的把id看作是主键,它不过是一个普通字段罢了。
mind_1220 2004-08-10
  • 打赏
  • 举报
回复
或者 select top 1 ID from tabName order by date desc
mind_1220 2004-08-10
  • 打赏
  • 举报
回复
晕 早说嘛
select distinct ID from tabname order by date desc
切忌date为数字类型
xzyan80 2004-08-10
  • 打赏
  • 举报
回复
up
BubbleInDiamond 2004-08-10
  • 打赏
  • 举报
回复
樓主真強,我可是第一次聽說id還重復的(那還叫id嗎)

樓主指的重復是不是說ID號?麻煩大了,不如在程序中實現吧

huagou 2004-08-10
  • 打赏
  • 举报
回复
我错了,不管重复不重复了,我的意思就是 对于一个同一个ID,取出其date值的末两位的最大的那条纪录。

比如:

1 200312
2 200308
3 200310
2 200311
4 200307
3 200307
5 200302

查询结果:

1 200312
2 200311
3 200310
4 200307
5 200302

cdsun 2004-08-10
  • 打赏
  • 举报
回复
搂主的问题表述的有问题


对于重复的记录,取出其date值的末两位的最大的那条纪录;

重复了就意味着一样啊。还会有一个大些??
pipi1269 2004-08-10
  • 打赏
  • 举报
回复
view1的主键是什么,一般数据库是不允许这样的重复数据的,除非你此处的ID和DATE都不是该表的KEY值
mind_1220 2004-08-10
  • 打赏
  • 举报
回复
赫赫

这个还真的有一点难度哈。
我觉得你可以用取差的方法判断它们有多少为不同。
比如:A-B=C 你在判断C的位长。就可以判断A和B相差了多少为 用最大的一个与其他的所有去减,可以判断出谁最大!
但是这个Sql怎么写 我就帮你UP吧。
加载更多回复(4)

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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