ALTER FUNCTION [dbo].[RG_GetFiscalYearName] (@lookupDate AS datetime)
RETURNS VARCHAR(15)
AS
begin
DECLARE @intDate BIGINT, @yearName VARCHAR(15)
SELECT @intDate = DAY(@lookupDate) + (MONTH(@lookupDate)) * 100 + (YEAR(@lookupDate) * 10000)
SELECT @yearName = MIN(t.FiscYearName)
FROM
dbo.DIM_Time_PC t
WHERE
t.id = @intDate
RETURN @yearName
END
ALTER FUNCTION [dbo].[RG_GetFiscalMonthStart] (@lookupDate AS datetime)
RETURNS datetime
AS
begin
DECLARE @intDate BIGINT, @monthStart DATETIME
SELECT @intDate = DAY(@lookupDate) + (MONTH(@lookupDate)) * 100 + (YEAR(@lookupDate) * 10000)
SELECT @monthStart = MIN(t2.formatDate)
FROM
dbo.DIM_Time_PC t INNER JOIN
dbo.DIM_Time_PC t2 ON t.FiscYearKey = t2.FiscYearKey AND t.MonthKeyFisc = t2.MonthKeyFisc
WHERE
t.id = @intDate
RETURN @monthStart
END
ALTER FUNCTION [dbo].[RG_GetFiscalMonthKeyFiscal] (@lookupDate AS datetime)
RETURNS VARCHAR(15)
AS
begin
DECLARE @intDate BIGINT, @monthStart VARCHAR(15)
SELECT @intDate = DAY(@lookupDate) + (MONTH(@lookupDate)) * 100 + (YEAR(@lookupDate) * 10000)
SELECT @monthStart = MIN(t2.MonthKeyFisc)
FROM
dbo.DIM_Time_PC t INNER JOIN
dbo.DIM_Time_PC t2 ON t.FiscYearKey = t2.FiscYearKey AND t.MonthKeyFisc = t2.MonthKeyFisc
WHERE
t.id = @intDate
RETURN @monthStart
END
ALTER FUNCTION [dbo].[minusOneDay]
(
@dt DATETIME
)
RETURNS DATETIME
AS
BEGIN
SET @dt = DATEADD(DAY, -1, DATEDIFF(dd, 0, @dt))
RETURN @dt
END
SUM((CASE
WHEN col.PRODUCT_CODE IN ('8500', '9000') THEN 0
ELSE
CASE
WHEN RG_SALESFORECASTBYPRODUCT_WEBSTER.FiscalYear = @fiscalYearNumber
AND RG_SALESFORECASTBYPRODUCT_WEBSTER.FiscalMonth = @fiscalMonthNumber
THEN ROUND((shl.SHIPPED_QTY * shl.UNIT_PRICE), 4)
ELSE 0
END
END)) AS 'TotalActualShip$$'
Not having your tables, I tested your Table-Valued UDF with minimal code and I had no problems. But if I were to guess I suspect the problem lies in the following code:
SELECT @startFiscalMonth = dbo.RG_GetFiscalMonthStart
@endFiscalMonth = dbo.RG_GetFiscalMonthEnd(@
@fiscalYearNumber = dbo.RG_GetFiscalYearName(@
@fiscalMonthNumber = dbo.RG_GetFiscalMonthKeyFi
@currentDateMinusOne = dbo.minusOneDay(@dt)