紧急请教一个不容易实现的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值的末两位的最大的那条纪录;唯一的纪录则显示该纪录。
...全文
211 点赞 收藏 24
写回复
24 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
胖河马 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吧。
回复
加载更多回复
相关推荐
发帖
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
帖子事件
创建了帖子
2004-08-10 09:09
社区公告
暂无公告