sql - 从输出中删除 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 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
);
推荐阅读
- sql - SQL Server 文件流:如何将 csv 读入表中
- flutter - 将小部件放置在其父小部件的边缘
- office-addins - 通过 O365 管理中心部署 Office 加载项
- java - 如何从 apache POI XWPFDocument 中获取图纸?
- c# - 调用返回文件的 API
- python - 如何使用 Python Azure SDK 和 Graph 修补现有应用程序?
- r - 打印函数并将函数分配给变量并打印给出不同输出的变量
- javascript - 在 Surface Pro 4 上无法获取 touch.rotationAngle 或 touch.force 的正确值
- prometheus - Prometheus:计算一段时间内的指标值
- html - 检查有多少行捕获了一些文本