一个sql语句

ssniu1985 2010-02-03 11:17:52
SELECT min_cons_amount
FROM min_cons_history
WHERE min_cons_acct = 225280001
AND min_cons_effective_date <= to_date(20110101,'yyyymmdd')
and rownum=1
order by min_cons_effective_date desc


min_cons_history 表里min_cons_acct = 225280001 有多条 我现在要按min_cons_effective_date降序排列取第一条

上面的语句不能满足,因为rownum=1在order by 之前就取了。。。
好像要有个嵌套查询,但我忘记怎么写了。
...全文
74 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaining522 2010-02-03
  • 打赏
  • 举报
回复


SELECT a.min_cons_amount
FROM min_cons_history a
WHERE
min_cons_effective_date = (select max(b.min_cons_effective_date)
from min_cons_history b
where b.min_cons_effective_date<=to_date(20110101,'yyyymmdd')
AND b.min_cons_acct = 225280001
)


ssniu1985 2010-02-03
  • 打赏
  • 举报
回复
我自己也想出来了。分给你们分了。
ssniu1985 2010-02-03
  • 打赏
  • 举报
回复
SELECT min_cons_amount
FROM min_cons_history
WHERE ROWNUM =1 AND min_cons_amount=(
SELECT min_cons_amount
FROM min_cons_history
WHERE min_cons_acct = 225280001
AND min_cons_effective_date <= to_date(20110101,'yyyymmdd')
order by min_cons_effective_date desc)

这样为什么不行?
liusong_china 2010-02-03
  • 打赏
  • 举报
回复
SELECT min_cons_amount FROM
(SELECT min_cons_amount FROM min_cons_history
WHERE min_cons_acct = 225280001
AND min_cons_effective_date <= to_date(20110101,'yyyymmdd')
order by min_cons_effective_date desc) where rownum = 1
ojuju10 2010-02-03
  • 打赏
  • 举报
回复
select * from
( SELECT min_cons_amount
FROM min_cons_history
WHERE min_cons_acct = 225280001
AND min_cons_effective_date <= to_date(20110101,'yyyymmdd')

order by min_cons_effective_date desc
)
where rownum=1
ychzxx 2010-02-03
  • 打赏
  • 举报
回复
select * from (SELECT min_cons_amount
FROM min_cons_history
WHERE min_cons_acct = 225280001
AND min_cons_effective_date <= to_date(20110101,'yyyymmdd')
order by min_cons_effective_date desc ) where rownum=1
ssniu1985 2010-02-03
  • 打赏
  • 举报
回复
要先排序再取ROWNUM=1

17,134

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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