我创建了一个表值函数,可以通过这种方式调用它来提供结果:
Select @DateId as DateId,*
From dbo.PastDueARcalc(@DateId)
Where PastDueAR <> 0
and CustomerId in (16629, 9969, 19809)
导致类似这样的事情:
DateId customerid IDNId AccountTypeId RegionId BusinessUnitId PastDueAR
----------- ----------- ----------- ------------- ----------- -------------- ----------
41657 16629 2949 1 3 2 7418.97
41657 9969 8233 1 5 3 5188.47
41657 19809 9522 1 5 7 15.82
...
到目前为止,这么好......现在这里是踢球者。 我正在尝试构建一个SSRS图表,它会给我SUM(PastDueAR)。所有其他字段都是报告的参数过滤器
但是正如你所看到的,我只有一天的数据。这就是我从函数中得到的全部内容。
我需要循环遍历函数,并使用用户选择的参数@StartDate和@EndDate中的所有值。并将所有这些结合在一起。 最终,报告可以具有值= SUM(PastDueAR)和groups = DateId
答案 0 :(得分:0)
您需要以某种方式生成您感兴趣的所有日期的列表,然后针对您的表值函数生成CROSS APPLY
。
例如(根据您的用例细节进行调整):
DECLARE @dates TABLE (dt datetime)
-- you can get the dates into the table in any way that is most appropriate...
INSERT INTO @dates (dt) VALUES ('1/1/2014')
INSERT INTO @dates (dt) VALUES ('1/2/2014')
INSERT INTO @dates (dt) VALUES ('1/3/2014')
SELECT SUM(pdar.PastDueAR) AS PastDueAR_Total
FROM @dates dates
CROSS APPLY dbo.PastDueARcalc(dates.dt) pdar
WHERE pdar.PastDueAR <> 0
AND CustomerId in (16629, 9969, 19809)