一句sql
有一表如下:
fld1 fld2 begin_date end_date
1 a 20020101 20050101
2 a 20020201 20060101
3 b 20010101 20020101
4 b 20020101 20050101
要求选出相同fld2的最晚begin_date的记录(全部字段)
结果:
fld1 fld2 begin_date end_date
2 a 20020201 20060101
4 b 20020101 20050101
//
但用下面的语句不能选出所有字段
select fld2,max(begin_date) from tab group by fld2;
在oracle中好象可以用
select fld1,fld2,max(begin_date),end_date from tab
where (fld2,begin_date) in
select fld2,max(begin_date) from tab group by fld2
但在sqlserver,sqlanywhere中就不对了,请大家帮忙~~
或者给一下其它数据库的写法也行
问题点数:20、回复次数:2Top
1 楼KingSunSha(弱水三千)回复于 2002-05-21 13:33:03 得分 20
select fld1,fld2,max(begin_date),end_date from tab
where (fld2,begin_date) in
select fld2,max(begin_date) from tab group by fld2
在任何数据库中都无法执行,基本语法错误,必须在第一个select中去掉max
我在另外一个帖子回了比较好的一种写法,但当时没注意到你的sql根本就是错了Top
2 楼fangss()回复于 2002-05-21 14:01:30 得分 0
呵呵,是错了!
那个贴子我也看到了,多谢弱水兄Top




