我有一张这样的表:
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
,但这并没有给我所需的输出。
答案 0 :(得分:1)
您可以在子选择组中使用in子句 如果您使用的是允许元组的数据库
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;
或者如果db不允许使用元组,则可以使用内连接
import tkinter as tk
root = tk.Tk()
myvar = tk.StringVar()
myvar.set("A test")
def on_click(event):
event.widget.delete(0, tk.END)
entry = tk.Entry(root, textvariable=myvar)
entry.bind("<Button-1>", on_click)
entry.pack()
root.mainloop()
答案 1 :(得分:1)
Oracle 回答:
您缺少的是获取与每个组中tablename
对应的max(date)
。
使用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