在oracle DB中返回多列的一列上选择distinct

时间:2015-05-22 09:09:05

标签: sql oracle

查询后
partition by Id order by Id asc on my table Tbl

我得到了结果:

Id      DATE&TIME               DATE       VALUE
A      03-05-2015,03:05:36  03-05-2015  2
B      19-05-2015,11:05:02  19-05-2015  2
A      15-05-2015,06:05:38  15-05-2015  2
A      15-05-2015,09:05:06  15-05-2015  8
A      15-05-2015,09:05:29  15-05-2015  10
A      15-05-2015,11:05:18  15-05-2015  10
c      05-05-2015,02:05:15  03-05-2015  20
d      12-05-2015,03:05:28  08-05-2015  2
d      12-05-2015,04:05:56  07-05-2015  10
e      04-05-2015,08:05:41  03-05-2015  2
f      06-05-2015,09:05:35  08-05-2015  20

但我要求输出如下:

Id    DATE&TIME             VALUE
A     03-05-2015,03:05:36   2
B     19-05-2015,11:05:02   2
A     15-05-2015,11:05:18   10
c     05-05-2015,02:05:15   20
d     12-05-2015,04:05:56   10
e     04-05-2015,08:05:41   2
f     06-05-2015,09:05:35   20 

即该记录在“日期”方面应该是独一无二的。只有&最大限度地获得' VALUE'从上面的数据。

2 个答案:

答案 0 :(得分:0)

您似乎想要与postgres'DISTINCT ON类似的功能。

my previous answer,您可以使用:

select distinct id, 
first_value(datetime) over (partition by id order by value desc)
from mytable

这假设您想要order by id asc,因为对于相同的ID(例如A),订单将不会被指定;在给定的示例中,结果因此按value desc排序。

答案 1 :(得分:0)

您是否尝试过使用DELETE FROM txn_log WHERE txn_log_pgm_id IN (SELECT txn_log_pgm_id FROM txn_log ORDER BY txn_log_timestamp asc LIMIT 500)

我不确定该语法是否适用于OracleDB ...

SELECT - 我的查询中的参数应返回所需的列。

至于TIME与DATE& TIME:如果您仔细查看您的行是不同的,如果您按日期和时间选择所需的结果,则表示您想要DATE的DISTINCT条目......