我想编写一个返回整个表的最大日期的查询。但是,我想返回该最大日期的一些关联记录/列。例如,与该最大日期关联的 ID。
桌子:
帐号 | 约会 | 产品 |
---|---|---|
123123 | 2004-01-01 | 衬衫 |
145236 | 2006-07-01 | 裤子 |
123156 | 2008-01-11 | 衬衫 |
145347 | 2014-01-01 | 衬衫 |
我想返回整个表的最大日期以及标识 ID 记录。这样我就知道哪个记录返回了最大日期以及最大日期。
这是我尝试过的: 从 db2.table t1 中选择 t1.account_number、max_date join (select account_number, max(date) as max_date from db2.table group by id) t2 在 t1.account_number= t2.account_number 和 t1.date = t2.max_date
结果: 我为每个带有最大日期的 account_number 返回一行。相反,我期待单行输出:
帐号 | 约会 |
---|---|
145347 | 2014-01-01 |
SELECT X.account_number,X.date FROM
(
SELECT T.account_number,T.date,
ROW_NUMBER()OVER(ORDER BY T.DATE DESC)XCOL
FROM YOUR_TABLE T
)X WHERE X.XCOL=1
你可以试试上面的 ROW_NUMBER-逻辑
以下任何一个都可以工作。
select account_number, date from t1 order by date desc 仅获取第一行
select account_number, max(date) as max_date from t1 group by act_num order by max_date desc 仅获取前 1 行
你可以结合
ORDER BY
和FECTH NEXT n ROWS ONLY
。例如:
select * from t order by date desc fetch next 1 rows only
如果您只是想查找最近日期的数据行,那么可以使用 LIMIT 函数在对整个表进行降序排序后仅显示最近的条目。
SELECT account_number, date
FROM table
ORDER BY date DESC limit 1;