我有一个表格,显示年份的字母ID和创建的时间戳。我必须列出每年的最新时间戳。
例如:这是我的数据。
Letter ID YEAR TIMESTAMP 1411 2013 17-NOV-14 09.18.01.000000000 AM 1412 2013 16-NOV-14 09.18.01.000000000 AM 1413 2013 15-NOV-14 09.18.01.000000000 AM 1414 2013 14-NOV-14 09.18.01.000000000 AM 1415 2013 13-NOV-14 09.18.01.000000000 AM 1416 2012 17-NOV-14 10.18.01.000000000 AM 1417 2012 16-NOV-14 10.18.01.000000000 AM
期望的结果应该是:
Letter ID YEAR TIMESTAMP 1411 2013 17-NOV-14 09.18.01.000000000 AM 1416 2012 17-NOV-14 10.18.01.000000000 AM
请让我解决这个问题......
答案 0 :(得分:0)
select * from (
select Letter_ID,YEAR,TIMESTAMP,
row_number()over(partition by YEAR order by TIMESTAMP desc) RN from DATA
) WHERE RN = 1
希望帮助你。
答案 1 :(得分:0)
试试这个:
SELECT t2.LETTER_ID, t1.YEAR, t1.TIMESTAMP
FROM (SELECT YEAR, MAX(TIMESTAMP) as MAX_TIMESTAMP
FROM YOUR_TABLE -- change the table name to yours
GROUP BY YEAR)t1
JOIN YOUR_TABLE t2 -- change the table name to yours
ON t2.YEAR = t1.YEAR
AND t2.TIMESTAMP = MAX_TIMESTAMP
此查询将在任何数据库上运行。
答案 2 :(得分:0)
另一种方法:
SELECT DISTINCT
letter_id
,year
,MAX("TIMESTAMP") OVER (PARTITION BY letter_id, year) AS "TIMESTAMP"
FROM my_data;
请注意,TIMESTAMP是Oracle中的保留字,因此我假设您的列需要分隔为" TIMESTAMP"。