Sql 通过表值函数循环变量
我创建了一个表值函数,可以通过以下方式调用该函数以提供结果:Sql 通过表值函数循环变量,sql,sql-server,tsql,loops,Sql,Sql Server,Tsql,Loops,我创建了一个表值函数,可以通过以下方式调用该函数以提供结果: Select @DateId as DateId,* From dbo.PastDueARcalc(@DateId) Where PastDueAR <> 0 and CustomerId in (16629, 9969, 19809) 到目前为止,一切都很好。。。现在是踢球者。 我正在尝试建立一个SSRS图表,它将为我提供SumpassDuear。所有其他字段都是报表的参数过滤器 但正如你所看到的,我只有一天的数据。这
Select @DateId as DateId,*
From dbo.PastDueARcalc(@DateId)
Where PastDueAR <> 0
and CustomerId in (16629, 9969, 19809)
到目前为止,一切都很好。。。现在是踢球者。
我正在尝试建立一个SSRS图表,它将为我提供SumpassDuear。所有其他字段都是报表的参数过滤器
但正如你所看到的,我只有一天的数据。这就是我从函数中得到的全部信息
我需要使用用户选择的@StartDate和@EndDate参数中的所有值循环函数。把所有这些结合在一起。
最终,报表的值可以是=SUMPastDueAR,而groups=DateId,您需要以某种方式生成您感兴趣的所有日期的列表,然后交叉应用于表值函数 例如,根据用例的具体情况进行调整:
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)
谢谢你,mwigdahl,这是完美的,它就像我需要的那样工作。
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)