【发布时间】:2012-02-23 20:15:08
【问题描述】:
这是我试图在 SQL Server 上执行的以下代码。
DECLARE @string NVARCHAR(MAX) = '
CREATE PROC [dbo].[Trend]
@slsID NVARCHAR(20)
AS
BEGIN
SET NOCOUNT ON
DECLARE @BeginningRange varchar(20),
@EndingRange varchar(20)
SET @EndingRange = ''12*13''
SET @BeginningRange = ''12*02''
;WITH CTE1 AS(
SELECT
dbo.Field1,dbo.Field2,dbo.Field3
FROM dbo.Table1 join dbo.Table2 where...conditions
weekNum BETWEEN (@BeginningRange) AND (@EndingRange)
)
SELECT * FROM CTE1
UNPIVOT
( numbers for type in (Field1, Field2, Field3, Field4)
) as p PIVOT
(
Sum(numbers) for
WeekNum in ([12*02],[12*03],[12*04],[12*05],[12*06],[12*07],[12*08],[12*09],[12*10], [12*11],[12*12],[12*13])
) as q
END
'
EXECUTE SP_EXECUTESQL @STRING
当我尝试运行它时,它会出错说
“关键字'as'附近的语法不正确”
我取出这段代码并单独执行它,它没有出错。我在这里遗漏了什么吗?
【问题讨论】:
-
您正在运行的代码中是否还有
...conditions,或者您是否更改了这些代码以便在此处发布?此外,如果您希望@EndingRange被评估为 12*13,则不应将其放在引号中。 -
我已经考虑了报价。这是我尝试运行的直接复制粘贴,是的,为了发布而故意设置了...条件。
-
为什么不只是运行代码?我看不出它为什么需要动态 SQL。
标签: sql-server-2008 sp-executesql