从输出中删除 RANK() 列

Remove RANK() column from output

我在以下脚本中使用 RANK() 函数来获取每个投资组合最近日期的观察结果。然而,虽然我对脚本提供的输出非常满意,但我想知道是否可以在输出中省略列 'rank'。

SELECT
 tbl.*
FROM
(SELECT 
 a.from_date fromdate, 
 a.portfolio,
 a.var1,
 a.var2,
 RANK() OVER (PARTITION BY a.portfolio ORDER BY a.from_date DESC) AS rank 
FROM 
 table1 a, 
INNER JOIN
 table2 b
ON
 a.portfolio_ref=b.por_ref
) tbl
WHERE
 tbl.rank = 1

谢谢。

显然,您可以在外部查询中 select 您想要的列:

select fromdate, portolio, var1, var2
from . . . 

您还可以使用相关子查询:

一种方法是改用相关子查询:

SELECT a.from_date as fromdate, a.portfolio,
       a.var1, a.var2
FROM table1 a INNER JOIN
     table2 b
     ON a.portfolio_ref = b.por_ref
WHERE a.from_date = (SELECT MAX(a2.from_date)
                     FROM table1 a2
                     WHERE a2.portfolio = a.portfolio
                    );