Sql 在oracle DB中返回多个列的一列上选择distinct
询问Sql 在oracle DB中返回多个列的一列上选择distinct,sql,oracle,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-
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
i、 e该记录仅在“日期”方面应是唯一的,并从上述数据中获取“值”的最大值。似乎您需要类似于postgres的功能 根据,您可以使用:
select distinct id,
first_value(datetime) over (partition by id order by value desc)
from mytable
这是假设您不想
按id asc订购,因为对于相同的id(例如A
),订单将不确定;因此,在给定的示例中,结果按值desc
排序。您是否尝试使用从中选择不同的ID、时间、值(在我的表Tbl上按ID分区和按ID排序asc)
我不确定这种语法是否适用于OracleDB
查询中的SELECT参数应该返回所需的列
至于时间与日期和时间:如果你仔细观察,如果你选择按日期和时间,你的行是不同的,你想要的结果表明,您希望为日期输入不同的条目…看起来您应该在Id
上使用group by
和VALUE
和max
在DATE&TIME
上使用group by
,请向我们展示您的完整声明。