1

私は 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 (毎月) は、支払いが 1 か月ごとに行われることを意味します。

また、大きな期間 (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

)

データが入力されたら、カレンダー テーブルを使用して残高予測を作成できます。

ただし、そのテーブルにデータを取得するのは難しいです。

各scheduled_transactionを調べてから、カレンダーを調べて、その日にトランザクションが行われるかどうかを確認する必要があると思いますか? 次に、行を一時テーブルに挿入しますか?

したがって、ネストされたカーソルになると思います。各scheduled_transaction行、次に各カレンダー行に対して、何らかの形式の「DATEADD」などを使用しますか?

誰でもこれで私を助けることができますか?

4

2 に答える 2