【发布时间】:2014-02-21 11:04:11
【问题描述】:
我有一个包含计划事务的表。计划交易行包含一个“first_payment_date”和一个“frequency_id”,可以是每周、每 2 周、每月、每年(以及其他一些)
CREATE TABLE [dbo].[scheduled_transaction](
[id] [int] IDENTITY(1,1) NOT NULL,
[description] [varchar](50) NOT NULL,
[account_id] [int] NOT NULL,
[payment_frequency_type_id] [int] NOT NULL,
[first_payment_date] [date] NOT NULL,
[last_payment_date] [date] NULL,
[payment_amount] [decimal](18, 2) NOT NULL
)
因此,第一个日期是应付款的第一个日期。最后日期是最后预定的日期。如果为 null,则没有结束日期。
频率是,1=一次,2=每周一次,3=每两周一次,4=每月一次
我需要做的是列出所有预定的交易,并包括下一个预定的付款日期。所以,根据第一个日期 - 我需要根据今天的日期计算下一个截止日期。
这可能吗,在查询中,还是我需要游标?
【问题讨论】:
-
使用 datediff 和 dateadd 函数以及“tally”又名数字表进行检查。您可以使用 case 语句和 datediff 来获取付款次数,然后加入计数表以复制那么多行,并使用 dateadd 将正确的单位添加到第一个付款日期。如果您需要,我可以在几小时后回到我的电脑后发布更多信息。
标签: sql sql-server