Sql server 求救!SSRS参数与SSMS的结果不同
我正在制作一份SSRS报告,其中有4个下拉列表。所有这些都添加到查询中。 ID01, ID02, 开始时期, 结束时间 StartPeriod和EndPeriod是nvarchar,但它们显示的是日期。比如201401201403 我的问题是,当我运行SSR时,如果我选择所有ID01和所有ID02,我无法在201401-201405之间获得任何信息。但当我运行SSMS时,会有记录。201405之后的一切都没有问题 我的代码是Sql server 求救!SSRS参数与SSMS的结果不同,sql-server,reporting-services,Sql Server,Reporting Services,我正在制作一份SSRS报告,其中有4个下拉列表。所有这些都添加到查询中。 ID01, ID02, 开始时期, 结束时间 StartPeriod和EndPeriod是nvarchar,但它们显示的是日期。比如201401201403 我的问题是,当我运行SSR时,如果我选择所有ID01和所有ID02,我无法在201401-201405之间获得任何信息。但当我运行SSMS时,会有记录。201405之后的一切都没有问题 我的代码是 CREATE PROCEDURE ABC @ID0
CREATE PROCEDURE ABC
@ID01 nvarchar(2000)
,@ID02 nvarchar(10)
,@StartPeriod nvarchar(30)
,@EndPeriod nvarchar(30)
AS
BEGIN
SELECT ID01,ID02
,CASE WHEN year(Date)='2014' and month (Date)='01'then '201401'
WHEN year(Date)='2014' and month (Date)='02'then '201402'
.
.
.
WHEN year(Date)='2015' and month (Date)='05'then '201505'
END AS Period
INTO #tmp_ABC
FROM A
WHERE ID01 IN (SELECT Param FROM dbo.udf_ABC(@ID01,','))
AND ID02 IN (SELECT Param FROM dbo.udf_ABC(@ID02,','))
(THIS TWO ARE DROP DOWN LIST FOR SSRS)
----------
SELECT ID01,ID02,Period
FROM #tmp_ABC
WHERE Period >= @StartPeriod AND Period <=@EndPeriod (DROP DOWN LIST FOR SSRS)
END
谁能告诉我我的报告有什么问题吗?这是我第一次用这个。请原谅我写错了格式。。。
谢谢 为什么@ID02只有10个字符长?这并没有给参数列表留下太多空间。这可能是个问题 您的存储过程似乎过于复杂-这不是问题的真正原因,但可以简化。以下是存储过程的重新工作:
CREATE PROCEDURE ABC
@ID01 nvarchar(2000)
,@ID02 nvarchar(2000)
,@StartPeriod nvarchar(30)
,@EndPeriod nvarchar(30)
AS
BEGIN
SELECT ID01, ID02,
CAST(Year(Date) AS NVARCHAR) + Right('0' + CAST(Month(Date) AS NVARCHAR), 2) AS Period
FROM A
WHERE ID01 IN (SELECT Param FROM dbo.udf_ABC(@ID01,','))
AND ID02 IN (SELECT Param FROM dbo.udf_ABC(@ID02,','))
AND CAST(Year(Date) AS NVARCHAR) + Right('0' + CAST(Month(Date) AS NVARCHAR), 2) >= @StartPeriod
AND CAST(Year(Date) AS NVARCHAR) + Right('0' + CAST(Month(Date) AS NVARCHAR), 2) <= @EndPeriod
END
谢谢谢谢谢谢谢谢你!!!!!!!!!!!!!!这就是问题所在!!!非常感谢你!!!!如果这解决了你的问题,你应该接受这个答案,让其他人知道它已经解决了,也感谢你的投票:哦~!!很抱歉,这是我第一次用这个。我只是接受这个答案,但我没有足够的声望去投票……等我有了足够的声望,我一定会投票给你的!!