Sql 通过左外联接传递变量中的值

Sql 通过左外联接传递变量中的值,sql,sql-server,Sql,Sql Server,我想在select查询中传递变量,但出现以下错误 Declare @ChangeComment as varchar(1000) set @ChangeComment='' select FirstName,LastName,SalesAmount,@ChangeComment='Test' FROM [AdventureWorksDW2014].[dbo].[DimCustomer] a left outer join [AdventureWorksDW2014].[dbo].[Fact

我想在select查询中传递变量,但出现以下错误

Declare @ChangeComment as varchar(1000)
set @ChangeComment=''
select FirstName,LastName,SalesAmount,@ChangeComment='Test'   
FROM [AdventureWorksDW2014].[dbo].[DimCustomer] a
left outer join [AdventureWorksDW2014].[dbo].[FactInternetSales] b on a.CustomerKey=b.CustomerKey

只要这样做:

Declare @ChangeComment as varchar(1000)
set @ChangeComment='Test'

    select FirstName,LastName,SalesAmount,@ChangeComment as ChangeComment  
    FROM [AdventureWorksDW2014].[dbo].[DimCustomer] a
    left outer join [AdventureWorksDW2014].[dbo].[FactInternetSales] b on a.CustomerKey=b.CustomerKey

您不需要在查询中设置@ChangeComment,因为您可以独立于查询结果来决定其值。

我想您需要的是动态SQL:

DECLARE @ChangeComment as varchar(1000)
DECLARE @sql nvarchar(max)

SET @ChangeComment='Test'

SET @sql = N'select FirstName,LastName,SalesAmount, '+@ChangeComment+'
FROM [AdventureWorksDW2014].[dbo].[DimCustomer] a LEFT OUTER JOIN
     [AdventureWorksDW2014].[dbo].[FactInternetSales] b on a.CustomerKey=b.CustomerKey'

PRINT @sql -- By using this you will see how SQL Statement looks at the run time before execution. 

EXEC sp_executesql @sql;

错误声明是明确的。您不能一次选择和分配某些内容。我需要在循环中串联变量中的值。对此有任何解决方法吗?@at9063示例数据和预期结果会有所帮助。在上面的查询中,我想使用变量更改注释捕获销售表和客户表中的更改注释中的注释代码对我们确实没有帮助你,不。这与动态sql无关。