【发布时间】:2015-09-05 18:16:02
【问题描述】:
我需要在存储过程下面的数据透视表中输入一个参数。但它声明,“必须声明标量变量“@pWeek”。”
我试图以各种方式声明它,但我无法弄清楚这一点。 当我得到我想要的数字时,这个编码的其他一切都很好,我想要它们的方式。我只需要能够将其放入 SSRS 并能够输入参数。谢谢。
GO
/****** Object: StoredProcedure [dbo].[QB_ACCOUNT_SUMMARY] Script Date: 6/19/2015 12:42:12 PM ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[QB_ACCOUNT_SUMMARY]
@pWeek int
as
SET NOCOUNT ON
declare @AccountRef_Fullname AS NVARCHAR(MAX)
select @AccountRef_Fullname = COALESCE(@AccountRef_Fullname + ',', '') + '['+ AccountRef_Fullname + ']'
from
(
select distinct Accountref_fullname
from (select accountref_fullname from journalcreditlinedetail)JournalCreditLine
union
(select accountref_fullname from journaldebitlinedetail)
union
(select accountref_fullname from txnexpenselinedetail)
union
(select accountref_fullname from depositlinedetail)
union
(select discountaccountref_fullname from [appliedtotxndetail])
) pAccountRef_Full_Name
declare @Sql NVARCHAR(MAX)
set @Sql = N' SELECT [REAL WEEK], [LTWS WEEK], [REAL YEAR], [LTWS YEAR], [LTWS PERIODS], ' + @AccountRef_Fullname
+ 'from
(SELECT * from Account_Summary_View
where Week = @pWeek
)Account_Data '
+' PIVOT ('
+ ' sum(amount) for AccountRef_FullName in ('+ @AccountRef_Fullname +')'
+' ) AS PivotTable '
--+' )Data '
exec (@Sql)
;
【问题讨论】:
-
您正在创建动态 SQL,您是否记得在字符串之外声明和使用变量(就像您使用 AccountRef_Fullname 所做的那样)?此外,我在您的 proc 定义中看不到任何参数。
-
我已经更新了原始代码以显示@pWeek 参数以及我尝试实现它的一种方式。但我总是收到同样的错误信息。我正在尝试使用它,以便参数可以链接到用户在通过 SSRS 查看时输入的内容。
标签: sql sql-server parameters pivot scalar