我有一个视图可以回退46,712条记录,其中包括以下两个字段:
StartDate & 的结束日期
我需要添加一个名为'Period'的新列,在此列中我需要将每条记录列为'累积'或'非累积'
问题在于,首先我的所有记录都需要一个'累积'行,并且当前月份中有效的每条记录也必须有一个'非 - 累积'行。
适用于有资格被归类为非累积的记录的规则如下:
EndDate = NULL
当月内的EndDate
作为我的所有行,无论条件必须具有“累积”行,我必须使用某种JOIN复制任何符合“非累积”类型的行。
所以,如果我有46712行,其中200行是'非累积',我应该最终得到46,812行。 (200除了累积/非累积结果外,是重复的。
有没有人对我应该怎么做才有任何建议。
答案 0 :(得分:4)
如果我理解了这个问题,那么这应该做你需要的。
Declare @rowType as table (rowTypeLabel nvarchar(20))
Insert Into @rowType
Values ('Cumulative')
Insert Into @rowType
Values ('Non-Cumulative')
Select StartDate, EndDate, rowTypeLabel As Period
From dbo.YourTable
Cross Join @rowType
Where (@rowType = 'Cumulative'
Or (@rowType = 'Non-Cumulative' And ( EndDate is null
Or
EndDate Between
Cast(DateAdd(Day, 1 - Day(getDate()), getdate()) as date)
And
Cast(DateAdd(month, 1, DateAdd(Day, - Day(getDate()), getdate())) as date))
)