sql语句,求优化,有表有数据,谢谢大侠!

物润声无 2011-10-26 09:14:13
表结构:(每个人每次的交易都会存入这张表)
table1:
type: varchar2 number date number varchar2
tranId tranSrlNum tranDate tranAmt pID
1 1 10/10/2011 20 1234567
1 2 10/10/2011 10 1234567
2 1 10/10/2011 10 1234567
2 2 10/10/2011 10 1234567
2 3 10/10/2011 15 1234567 -- 目标记录
1 1 09/09/2011 10 1234567
1 2 09/09/2011 5 1234567
1 1 08/09/2011 6 1234567
.......
1 1 10/10/2011 100 8888888
.......

tranId tranSrlNum tranDate 是该表的联合主键, 求每个人最近发生的一次交易记录。

如:pID = 1234567(外键,唯一表示一个人), 怎么把目标记录选出来啊 ? 用一条sql 语句实现

select *
from table1
where (to_char(tranDate,'dd-mm-yyy')||(trim(tranId))||(trim(tranSrlNum)) = (
select max((to_char(tranDate,'dd-mm-yyy')||(trim(tranId))||(trim(tranSrlNum)) )
from table1
where pID = '1234567'
)

上面的得到了正确结果,但是用到自己的function中,加了这段逻辑,结果跑了很长时间没跑出结果,

求解!
...全文
87 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cosio 2011-10-26
  • 打赏
  • 举报
回复
select *
from( select row_number()over(partition by pID order by tranDate desc) row_,
t.*
from table1)
where row_ = 1
and pid='' --加条件
cosio 2011-10-26
  • 打赏
  • 举报
回复
select *
from( select row_number()over(partition by pID order by tranDate desc) row_,
t.*
from table1
)
where row_ = 1 and pID = '1234567'

cosio 2011-10-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 benchim888 的回复:]
SQL code

select *
from( select row_number()over(partition by pID order by tranDate desc) row_,
t.*
from table1)
where row_ = 1;
[/Quote]



--用分析函数!
BenChiM888 2011-10-26
  • 打赏
  • 举报
回复
补充一句,排序条件 order by tranDate desc 我分析只需要这一个条件。
你根据你自己的业务情况,改改吧。
BenChiM888 2011-10-26
  • 打赏
  • 举报
回复

select *
from( select row_number()over(partition by pID order by tranDate desc) row_,
t.*
from table1)
where row_ = 1;
liweixin 2011-10-26
  • 打赏
  • 举报
回复
select nt.pid,nt.trandate,nt.tranid,nt.transrlnum,nt.tranAmt from
(select t.pid,t.trandate,t.tranid,t.transrlnum,t.tranAmt,
rank() over(partition by t.pid order by t.trandate desc,t.tranid desc,t.transrlnum desc) r
from table1 t) nt
where nt.r=1 and nt.pid='1234567'

测试通过,给分吧。

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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