如何在SQL Server 2012中将CTE与T-SQL变量一起使用?
我有一个包含另一个变量的T-SQL变量,我想基于这个T-SQL变量创建一个CTE 我曾尝试在CTE中打印T-SQL变量,但它不起作用如何在SQL Server 2012中将CTE与T-SQL变量一起使用?,sql,sql-server,Sql,Sql Server,我有一个包含另一个变量的T-SQL变量,我想基于这个T-SQL变量创建一个CTE 我曾尝试在CTE中打印T-SQL变量,但它不起作用 declare @Hid nvarchar(5), @mysql nvarchar(max) set @Hid = 1 set @mysql = 'SELECT CONVERT(DATE, GETDATE()) AS RptDate, a.[key],
declare
@Hid nvarchar(5),
@mysql nvarchar(max)
set @Hid = 1
set @mysql = 'SELECT
CONVERT(DATE, GETDATE()) AS RptDate,
a.[key],
b.[Country], b.AcNumber, b.AcName,
DATEDIFF([d], a.[ItemDate], GETDATE()) AS [IAge],
[comment] AS OfficerComment,
(SELECT dbo.fnMgrCmnt(2,' + @Hid + ', a.rowid, 1)),
c.[firstname] + '' '' + c.[lastname] AS Modifiedby,
d.hubId,
'''' AS origin,
b.Authname,
CONVERT(DECIMAL(38, 2), a.amount) AS Amt,
b.AcOwner,
a.rowid AS rowid
FROM [dbo].[T_AccRecon] a
INNER JOIN [dbo].[VW_TMain] b ON a.[key] = b.[Key]
LEFT JOIN [dbo].[users] c ON a.Modifiedby = c.userId
LEFT JOIN [dbo].[Country] d ON b.Country = d.code
AND b.AcOwner = d.hubcode'
我想从这个@mysql
变量创建一个CTE。我试过了
;WITH MY_CTE AS (@mysql)
但它不起作用。对此可以做些什么?第一件事是,当您构建一个字符串时,它是动态sql,这意味着您必须执行该字符串。第二件事是您需要使用参数,而不是使用输入执行字符串。第三件事是,我认为您首先不需要动态sql,我支持这一点。你只是在展示一些更大的东西的摘录吗?您可以轻松地直接在示例中运行该sql语句。可能会发布更大的示例,包括CTE。