【发布时间】:2018-06-01 23:29:48
【问题描述】:
我需要构建一个查询来按成员和到期日期检索信息组,但我需要为每个成员提供一个序列号..
例如:
如果成员“A”有 3 条记录要过期,“B”只有 1 条,“C”有 2 条,我需要这样的结果:
编号会员有效期 1 A 2020 年 1 月 1 日 2 A 02/01/2020 3 A 03/01/2020 1 B 2020 年 1 月 1 日 1 C 01/01/2020 2 C 02/01/2020我现在的查询是:
SELECT ROW_NUMBER() OVER(ORDER BY TRUNC(EXPIRATION_DT) ASC) AS SEQUENCE, MEMBER_ID AS MEMBER, SUM(ACCRUALED_VALUE) - SUM(USED_VALUE) AS POINTS, trunc(EXPIRATION_DT) AS EXPDATE
FROM TABLE1
WHERE EXPIRATION_DT > SYSDATE AND EXPIRATION_DT < SYSDATE + 90
GROUP BY MEMBER_ID, TRUNC(EXPIRATION_DT)
HAVING SUM(ACCRUALED_VALUE) - SUM(USED_VALUE) > 0
ORDER BY 4 ASC;
但我不能“分组”序列号......现在的结果是:
Seq Mem 点 日期 1 1-O 188 2018-03-01 00:00:00 2 1-C 472 2018-03-01 00:00:00 3 1-A 485 2018-03-01 00:00:00 4 1-1 267 2018-03-01 00:00:00 5 1-E 500 2018-03-01 00:00:00 6 1-P 55 2018-03-01 00:00:00 7 1-E 14 2018-03-01 00:00:00【问题讨论】:
-
您能否解释一下,您的实际结果中的
Mem列是什么以及如何将其转换为“A”、“B”、“C”? -
A、B 或 C 只是可能值的示例......
标签: oracle date group-by row-number