我正在尝试提供一个我可以提供日期的功能,它会返回由会计决定的逻辑所规定的财务期。如果我能让SQL与我玩得很好,下面的算法应该让我在那里。
我得到的错误是“CREATE FUNCTION必须是批处理中的唯一语句”,并且从我收集的“If”是一个语句。我尝试使用“Case”代替,并且引发了不同的错误。
CREATE FUNCTION fn_Get_Period
(
@theDay Date
)
RETURNS Integer
AS
BEGIN
Declare @dayCursor Date
, @period_End Date
, @period_Counter Integer
Set @period_Counter = 1
Set @dayCursor = DATEADD(yy, DATEDIFF(yy,0,@theDay), 0)
Set @period_End = Dateadd(ww, 4, @dayCursor)
While @period_End < @theDay
Begin
If @period_Counter % 3 = 0
BEGIN
set @dayCursor = Dateadd(ww, 5, @dayCursor)
set @period_End = Dateadd(ww, 5, @period_End)
END
Else
BEGIN
set @dayCursor = Dateadd(ww, 4, @dayCursor)
set @period_End = Dateadd(ww, 4, @period_End)
END
End
Set @period_Counter += 1
End
RETURN @period_Counter
END
GO
对我的方法有一些了解是件好事。
非常感谢,
内特