回 帖 发 新 帖 刷新版面

主题:这算不算一个疑难问题???高手请进

我有数据表tb1,包含如下记录:
id      x1     x2    x3    x4    
001     1      28      
001     2      20
001     3      18
002     1      9
002     3      15
002     2      6
希望得到每一个id号中包含x2最大值的新的数据表
使用:
sele id,x1,max(x2) from tb1 group by id
但结果如下
001  3   28
002  2   15
x1的值都是最后一条记录的值,请问如何使用SQL命令能得到正确的结果?
我的数据库很大,要求速度。
谢谢了!!!
  


回复列表 (共8个回复)

沙发

id编号不可以一样的

板凳

这道是一个大问题啊

3 楼

如果ID号是顺序存贮的,可以用以下的程序来实现:

local tempID, tempX2, currentID
sele tb1

tempID = id
tempX2 = x2

scan
currentID = id
if currentId = tempId
   if tempX2< x2
      tempX2 = x2  &&  可同时记录该记录的位置信息
   endif
else
   tempID = currentID
   将tempX2所在记录输出记录到新表中
   tempX2 = x2
endif

endscan
程序结束,就这么简单,不要老想用一条语句干很多事。
编程其实不复杂。



4 楼

sele max(x2),id,x1 from tb1 group by id 试下行不?

5 楼

几个月前的老贴竟成了热贴,有趣的很。
我想了一下,先对id 和 x2排序, x2用逆序(从大到小),
再用 total on id to newtablename fields x3

6 楼

1楼的你怎么能犯这种错误

7 楼

sele id,x1,max(x2) from tb1 group by id  having x2=max(x2)

8 楼

sele id,x2 from tb1 where x2 in (sele max(x2) from tb1)

我来回复

您尚未登录,请登录后再回复。点此登录或注册