选择两个具有一个最大日期的不同列
Selecting two distinct column with one max date
我有一个 table 这样的:
ID DATE TableName
X 29-Jan-12 A
X 29-Feb-12 B
X 29-Jan-12 C
Y 18-Nov-12 A
Z 18-Nov-14 C
X 17-Nov-13 D
Z 14-May-12 A
Y 18-Nov-13 D
我想用 MaxDate 获取唯一 ID,这样输出应该是这样的-
ID DATE TableName
Z 18-Nov-14 C
Y 18-Nov-13 D
X 17-Nov-13 D
我正在使用 select ID, MAX(DATE), TableName from table
,但这并没有给我想要的输出。
您可以在子选择组上使用 in 子句
如果您使用的数据库允许元组
select id, date, tableName
from my_table
where (id, date) in (select id, max(date)
from my_table
group by id);
或者如果数据库不允许元组,您可以使用内部联接
select id, date, tableName
from my_table a
inner join ( select id, max(date) max_date
from my_table
group by id) t on t.id = a.id and t.max_date = a.date;
甲骨文答案:
您缺少的是拾取与每个组中的 max(date)
相对应的 tablename
。
使用 keep (dense_rank last...)
可以最有效地完成此操作,如下所示:(注意 - DATE 是 Oracle 中的保留字,所以我希望您的列名不是 DATE,您只是将其用作占位符...)
select id, max(date) as date,
max(tablename) keep (dense_rank last order by date) as tablename
from table_like_this
group by id;
Oracle文档(为FIRST但阅读正文,也指LAST)
https://docs.oracle.com/cloud/latest/db112/SQLRF/functions065.htm#SQLRF00641
我有一个 table 这样的:
ID DATE TableName
X 29-Jan-12 A
X 29-Feb-12 B
X 29-Jan-12 C
Y 18-Nov-12 A
Z 18-Nov-14 C
X 17-Nov-13 D
Z 14-May-12 A
Y 18-Nov-13 D
我想用 MaxDate 获取唯一 ID,这样输出应该是这样的-
ID DATE TableName
Z 18-Nov-14 C
Y 18-Nov-13 D
X 17-Nov-13 D
我正在使用 select ID, MAX(DATE), TableName from table
,但这并没有给我想要的输出。
您可以在子选择组上使用 in 子句 如果您使用的数据库允许元组
select id, date, tableName
from my_table
where (id, date) in (select id, max(date)
from my_table
group by id);
或者如果数据库不允许元组,您可以使用内部联接
select id, date, tableName
from my_table a
inner join ( select id, max(date) max_date
from my_table
group by id) t on t.id = a.id and t.max_date = a.date;
甲骨文答案:
您缺少的是拾取与每个组中的 max(date)
相对应的 tablename
。
使用 keep (dense_rank last...)
可以最有效地完成此操作,如下所示:(注意 - DATE 是 Oracle 中的保留字,所以我希望您的列名不是 DATE,您只是将其用作占位符...)
select id, max(date) as date,
max(tablename) keep (dense_rank last order by date) as tablename
from table_like_this
group by id;
Oracle文档(为FIRST但阅读正文,也指LAST) https://docs.oracle.com/cloud/latest/db112/SQLRF/functions065.htm#SQLRF00641