从输出中删除 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
);
我在以下脚本中使用 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
);