0

我有一张表(我们称之为 Table_A),其中包含“due_date 列”、“amount”和“bank_institute”。还有另一个表(查找表),其中包含列“bank_institute”和“clearing_house”。在查找表中,内部和外部银行机构都分配给一个票据交换所。例如:票据交换所 CH1 有外部银行机构(来自其他银行)BI1、BI2...,也有内部银行机构(形成票据交换所)BI_CH1、BI_CH2... 另一个例子 - 如果您有一家公司并且您说:我想从美国银行的客户那里得到所有的钱,而不是票据交换所是“美国银行”,而向美国银行子公司的每笔付款都是“内部银行机构”,而例如英格兰银行与“

Table_A 有 due_date 列。但是这样安排,有些银行会在due_date取款,有些在due_date + 1。这里的“+1”表示“下一个工作日”。

问题和我的问题是:如何识别“due_date + 1”即“到期日 + 下一个工作日”,以预测我在接下来的 120 个工作日内将获得多少资金?

PS 我有一张表,我可以从中提取接下来的 120 个工作日。问题是 - 我不知道如何映射“working_day + 1”以获得正确的金额。

数据库风格:Teradata

4

1 回答 1

0

您的解释非常令人困惑:-) 有关规则和示例行以及预期结果的更多详细信息将很高兴。

如果“工作日”仅表示下周一是周六或周日,那将很容易。

但是“工作日”可能比周一到周五复杂得多(尤其是在银行环境中)。最简单的方法是您(希望)现有的日历表,可能会有一个 working_day 指示列。您需要添加一个新的 DATE 列并根据您的业务规则将其更新为下一个工作日。这是一次性设置过程,然后您可以轻松加入日历。

编辑:我刚读了你的 PS,这张表是什么,日历还是只是日期列表?

无论如何,您可以使用它来即时构建 next_working_days 列表:

SELECT
   calendar_date,
   working_day, 
   MIN(working_day) 
   OVER (ORDER BY calendar_date DESC 
         RESET WHEN working_day IS NOT NULL 
         ROWS UNBOUNDED PRECEDING ) AS next_working_day
FROM sys_calendar.CALENDAR 
LEFT JOIN working_days_table ON calendar_date = working_day
WHERE calendar_date BETWEEN (SELECT MIN(working_day) FROM working_days_table)
                        AND (SELECT MAX(working_day) FROM working_days_table);
于 2013-09-18T09:14:03.693 回答