【发布时间】:2017-05-30 02:43:06
【问题描述】:
我有 3 张桌子。帐户。反式和平衡。
假设帐户只有 2 个帐户。帐号 1 和 2。
它们在Trans Table中都有多个事务。
Trans 表中的 Sum(Amount) 等于每个帐户在任何给定时间的余额。
例如:账户 1 和 2 都有 50 美元。账户 1 进行了 100 美元的交易,而账户 2 仅进行了 35 美元的交易。
现在,帐户 1 的余额为负 50 美元。假设他存入 20 美元。无论如何,余额仍然是负数。
我需要一个查询来检查从今天起连续 3 个月或更长时间的余额是否为负数。 (所以 sysdate 每当我运行它时)。尽管他有 20 美元的存款,但余额仍然是负数。
当我使用 trans 表中的 transdate 或 balance 表中的 lastupdate 作为 3 个月标准时,上述帐户不会被提取。虽然,它是负面的,但它看到了一笔交易。
我想知道如何查询只有在连续 3 个月或更长时间为负数时才会在哪里显示帐号和余额,而不管交易何时发生。
列:
Account Table has AccountID
Trans Table has AccountID, Amount, TransDate
Balance Table has AccountID, Balance, LastUpdate
谢谢
更新
Trans Table
Select * from trans where accountid = 1;
Transdate Merchant Amount AccountID
10/1/16 Employer 50 1
10/4/16 Walmart -20 1
10/7/16 Kroger -50 1
现在,他的帐户在 2016 年 10 月 7 日变成了负数 - 20 美元。
Transdate Merchant Amount AccountID
12/01/16 Employer 10 1
他的帐户仍然是负数。如果我今天(2017 年 1 月 15 日)或更晚运行查询,他的帐户应该会被提取,因为他至少 90 天仍有负余额。
Balance Table
每个帐户仅保留 1 条记录。 截至今天,它显示以下内容:
AccountID Balance LastUpdate
1 -10 12/01/2016
LastUpdate 与 Trans Table 中该帐户的最后交易日期相同。
即使最后一笔存款是昨天来的,但这些账户仍然是负数,我正在为如何找到 90 天或更长时间为负数的账户而发疯。我需要为 50,000 个帐户执行此操作....
【问题讨论】:
-
能否提供一些示例数据?
-
我没有看到任何表示交易类型的列(存款与取款)。如何从 Trans 表中计算余额?
-
我在上面添加了示例数据。谢谢
标签: sql oracle aggregate aggregate-functions