【发布时间】:2018-04-24 01:33:39
【问题描述】:
我正在处理从 Oracle 到 Postgres 的转换,我被一段代码困住了,这让我发疯了。我不确定如何在 Postgres 中使用 SUM(VALUE) KEEP (DENSE_RANK FIRST ORDER BY START_DATE DESC) AS LATEST_VALUE。
我已经推荐了this page,但这对我不起作用。因为在我的情况下,查询具有GROUP BY 条件在这种情况下似乎相当困难。
这是为 Oracle 编写的一段代码,在转换为 Postgres 时遇到了困难。
SELECT
R_ID,
S_TYPE,
I_ID,
M_TYPE,
TRUNC(CAST( START_DATE, 'D') AS START_DATE,
SUM(VALUE) AS SUM_VALUE,
SUM(VALUE) KEEP (DENSE_RANK FIRST ORDER BY START_DATE DESC) AS LATEST_VALUE
FROM
TABLEX
WHERE
ACTIVE = 'Y'
GROUP BY
R_ID,
S_TYPE,
I_ID,
M_TYPE,
TRUNC( START_DATE, 'D')
最重要的是让 DENSE_RANK 用于 START_DATE,GROUP BY 用于 TRUNC(START_DATE, 'D')。
如果有人对此有任何见解,请告诉我。
提前致谢。
【问题讨论】:
-
我删除了多余的mysql 标签。 Stack Overflow 有一个问题,他们建议 mysql 解决任何与 SQL 相关的问题。
-
请您提供一些示例数据和预期输出。
标签: oracle postgresql