这种查询用SQL的实现?(50分)

  • 主题发起人 主题发起人 srs
  • 开始时间 开始时间
S

srs

Unregistered / Unconfirmed
GUEST, unregistred user!
表如下:

bm sfdate je
001 99/10/01 50.50
001 99/10/02 48.67
001 99/10/02 51.72
002 ...
002 ...
002 ...
....
....

我要取得每个编号的最后一次交费金额,想用SQL语句搞定

 
try it
select distinct bm from yourtable
order by sfdate desc
 
不对吧,然后金额怎么取法???
 
在ORACLE中可以通过一个子查询来实现:
设表名为AA:

select a.bm,a.je
from AA a,(select bm,max(sfdate) from aa group by bm) b
where a.bm=b.bm and a.sfdate=b.sfdate
 
select bm,max(sfdate) from table
group by bm
 
改一下yck的答案
select a.bm,a.je
from demo a,(select bm,max(sfdate) sfdate from demo group by bm) b
where a.bm=b.bm and a.sfdate=b.sfdate
 
怎么ORACLE说没有GROUP BY这个表达式?
 
是啊怎么ORACLE说没有GROUP BY 这个表达式
 
SQl server 是可以的,oracle不清楚
 
ORACLE肯定有GROUP BY这个表达式。

建议你们在ORACLE的SQL PLUS环境下执行上述语句。
可能你们的DELPHI的BDE出什么问题了
 
事实上我提这个问题并不是这么简单,不过诸位提供了一个思路,
另外我终于发现字段可以用别名,这样我的问题就最终解决了。

to yck: GROUP BY 表达式在ORACLE确实可以用,只是因为我的SQL表达式过
于复杂,所以ORACLE给出这个莫名其妙的错误
 
select a.* from tablename a where sfdate=(select max(sfdate) from tablename b where a.bm=b.bm group by bm)
 
如果你一定要用這樣一個有特色的表來設計你
的程序,不妨試試SQL的特色方法------CURSOR.
不過,建議你改一下表結构.
 
多人接受答案了。
 
后退
顶部