查找最大(日期)而不考虑其他列

Finding the max(date) irrespective of other columns

下面有一个像table

表 1

Id | Name  | Date
1     A      11.12.2018
2     B      12.12.2018
3     C      13.01.2017
4     D      15.06.2019
5     E      21.05.2019

表 2

Id | Marks
1     50
2     79
3     90
4     95
5     92

我想 select 所有标记 > 80 的记录,我想显示所有 selected 记录的最大(日期)。期望输出应该像

Id | Name | Date
3    C      15.06.2019
4    D      15.06.2019
5    E      15.06.2019

由于我是 sql 和 teradata 的新手,所以略有障碍。感谢您的宝贵时间和帮助

提前致谢。

这是我厌倦的查询,

SELECT a.Id, a.name , max(a.date)
FROM Table1 as a , Table2 as b
WHERE a.Id  = b.Id 
       AND b.Marks > 80

使用 MAX 作为整个 table 的分析函数,并更正您的连接语法:

SELECT
    a.Id,
    a.name,
    MAX(a.date) OVER () AS max_date
FROM Table1 a
INNER JOIN Table2 b
    ON a.Id = b.Id 
WHERE
    b.Marks > 80;

上述方法的替代方法是使用子查询查找整个 table:

的最大日期
SELECT
    a.Id,
    a.name,
    (SELECT MAX(a.date)
     FROM Table1 a INNER JOIN Table2 b ON a.Id = b.id
     WHERE b.Marks > 80) AS max_date
FROM Table1 a
INNER JOIN Table2 b
    ON a.Id = b.Id 
WHERE
    b.Marks > 80;