我对Oracle中的SQl查询有疑问,其中IO需要选择具有最新日期和时间的行,其中日期和时间被插入到两个单独的列中。
表TransactionRecords
CustomerID TransactionDate TransactionTime
-------------------------------------------------------
0206016 17-APR-17 15:29:34
0213570 17-APR-17 15:29:32
0211384 17-APR-17 13:29:34
0487674 16-APR-17 14:29:30
0487759 15-APR-17 13:29:32
0487213 12-APR-17 13:29:32
0191022 11-APR-17 15:29:33
1141158 29-OCT-16 01:25:51
我希望我的查询能够重新开始最近的交易:
CustomerID TransactionDate TransactionTime
---------------------------------------------------
0206016 17-APR-17 15:29:34
当我运行以下查询时:
select * from TransactionRecords tst
where tst.TransactionDate in (select max(TransactionDate) from
TransactionRecords)
我收到了最近一次发生的所有交易。 有人可以给我任何建议吗?
答案 0 :(得分:1)
在Oracle 12c中,您可以执行以下操作:
Obeseravble.concat(Observable.just(localDataItemList),Observable.just(remoteDataItemList))
.observeOn(Schedulers.computation())
.subcribeOn(AndroidScheulers.mainThread())
.subcribe(new Subscriber<List<Item>>(){
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(List<Item> concatinatedItemList) {
//this will have any duplicated items in case
//if one item happend to be in the both list before
}
});
在较低版本中,您可以使用SELECT *
FROM your_table
ORDER BY TransactionDate DESC, TransactionTime DESC
FETCH FIRST 1 ROWS ONLY;
伪列:
ROWNUM
答案 1 :(得分:0)
使用row_number()
。我已经使用CTE进行可见性,但子查询也可以使用
with CTE as
(
select t1.*,
row_number() over(order by TransactionDate desc, TransactionTime desc) as rn
from MyTable t1
)
select CTE.*
from CTE
where rn = 1
答案 2 :(得分:-2)
从TransactionRecords tst中选择* ORDER BY tst.TransactionDate || tst.TransactionTime DESC