我正在尝试选择最近的日期和时间。我知道我不能在WHERE子句中使用Max()函数,因为它不起作用。对于我的表4,我不想使用“GROUP BY”语句,因为我希望看到所有的ID。我尝试使用下面的代码,但它给了我一行,而不是表3中的多行。如果我不能在WHERE子句中使用Max()函数,还有什么其他方法可以获得最近的日期和时间?
表3:
ID|RESULT_Date1|RESULT_TIME_1|FINAL_Date1|FINAL_TIME_1
-|
766|2020年11月13日|12:12:12|2020年11月29日|13:11:12
766|2020年11月13日|12:12:12|2020年11月29日|14:11:12
765|2020年10月13日|12:12:12|2020年10月14日|11:11:12
765|2021-10-20|12:12:12|2020-10-21|12:13:14
表4所需的表:
ID|RESULT_Date1|RESULT_TIME_1|FINAL_Date1|FINAL_TIME_1
-|
766|2020年11月13日|12:12:12|2020年11月29日|14:11:12
765|2021-10-20|12:12:12|2020-10-21|12:13:14
代码:
CREATE TABLE table4 AS
SELECT *,
MAX(RESULT_DATE1)
FROM table3
/*WHERE RESULT_DATE1 || ' ' || RESULT_TIME_1*/
ORDER BY ID
;
2条答案
按热度按时间wlzqhblo1#
下面是一个使用
row_number
的简单解决方案。ID|RESULT_Date1|RESULT_TIME_1|FINAL_Date1|FINAL_TIME_1
-|
765|2021-10-20|12:12:12|2020-10-21|12:13:14
766|2020年11月13日|12:12:12|2020年11月29日|14:11:12
Fiddle
jtoj6r0c2#
您可以使用像
ROW_NUMBER()
这样的窗口函数按ID对结果进行分区,并按日期降序,为每个分区选择第一个结果,如下所示:或者,您可以将结果
GROUP BY
和JOIN
添加到原始表中: