• That seems a little complicated for a Fiscal Year function.

    The Fiscal Year Logic can be pared down to

    select YEAR(DATEADD(m,3,RegistrationDate)) as Fyear

    ,MONTH(DATEADD(m,3,RegistrationDate)) as Fmonth

    -- OR A Table Function

    CREATE FUNCTION dbo.FiscalYear

    (@SomeDate DateTime)

    RETURNS TABLE WITH SCHEMABINDING AS

    RETURN SELECT Fyear = YEAR(DATEADD(m,3,@SomeDate))

    ,Fmonth = MONTH(DATEADD(m,3,@SomeDate))

    ;

    GO

    SELECT

    fy.Fyear

    ,fy.Fmonth

    from YourTable

    CROSS APPLY dbo.FiscalYear(RegistrationDate) fy

    Or if you prefer to do it in SSRS create a calculated field with vb.net

    =Year(DateAdd(DateInterval.Month,3,Fields!RegistrationDate))

    =Month(DateAdd(DateInterval.Month,3,Fields!RegistrationDate))

    As stated earlier, you can also build a calendar table in memory and do a join, provided that the Registration Date is just the date value and doesn't have time values. I've been burned on calendar tables with fiscal data I find it easier and usually faster to do the DATEADD function

    "There is nothing so useless as doing efficiently that which should not be done at all." - Peter Drucker