【发布时间】:2013-10-12 20:17:48
【问题描述】:
我有一个 payment_schedule 表:
CREATE TABLE [dbo].[scheduled_transaction](
[id] [int] IDENTITY(1,1) NOT NULL,
[description] [varchar](20) NOT NULL,
[account_id] [int] NOT NULL,
[account_transaction_type_id] [int] NOT NULL,
[third_party_id] [int] NOT NULL,
[first_payment_date] [date] NOT NULL,
[last_payment_date] [date] NULL,
[payment_frequency] [int] NOT NULL,
[payment_frequency_type_id] [int] NOT NULL,
[payment_amount] [decimal](18, 2) NOT NULL,
[notes] [varchar](100) NULL,
[deleted] [datetime] NULL,
[createuser] [int] NOT NULL,
[createdate] [datetime] NOT NULL,
[lastupdateuser] [int] NULL,
[lastupdatedate] [datetime] NULL) ON [PRIMARY]
)
此表包含我的家庭系统的预定账单支付。频率只是每天、每周或每月。所以,支付频率 = 1,支付频率类型 = 3(按月)表示每月支付一次。
我还有一个日历表,它是一个包含大周期(2000 年到 2040 年)之间所有日期的表。这只是一个我认为对我将要做的事情有用的参考表。
我现在要做的是创建一个过程,该过程将返回从给定开始日期到给定结束日期的日期表,并根据我的日程安排,针对每个日期返回应在该日期完成的任何付款表。
我的计划是创建一个包含所有到期付款日期的临时表:
DECLARE @StartDate DATE
DECLARE @EndDate DATE
Set @StartDate = '01-JAN-2013'
SET @EndDate = '31-DEC-2013'
DECLARE @Schedule TABLE
(
ID INT NOT NULL IDENTITY(1,1),
TransactionDate DATE NOT NULL,
scheduled_transaction_id INT NOT NULL
)
填好后,我就可以使用日历表并创建余额预测。
但是,将数据放入该表是很棘手的。
我想我需要查看每个 schedule_transaction,然后查看日历,看看是否会在该日期完成交易?然后将该行插入到我的临时表中?
那么,我认为它会是嵌套游标。对于每个 schedule_transaction 行,然后对于每个日历行,并使用某种形式的“DATEADD”或其他什么?
谁能帮我解决这个问题?
【问题讨论】:
-
我有点明白你的意思,但我认为一个简单的例子配合你对问题的描述会让事情更清楚。
-
有完整源代码的最终解决方案吗?
标签: sql sql-server sql-server-2012