首页 > 解决方案 > 从输出中删除 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

谢谢你。

标签: sqlrank

解决方案


显然,您可以在外部查询中选择所需的列:

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
                    );

推荐阅读