动态 SQL 将执行结果存储在一个变量中,并将该结果连接起来形成一个完整的查询
Dynamic SQL to store the execution result in a variable and concatenate that result to form a full query
我正在尝试使用最终查询可以执行的动态列 name.So 进行查询
DECLARE @SQLFinal NVARCHAR(MAX)
DECLARE @SQLAlias NVARCHAR(MAX)='SELECT '',''+cast(ColumnName as varchar(20)) + '' as '' + cast(ColAliasName as varchar(20)) collate Latin1_General_CI_AS from #colandAlias'
DECLARE @SQLAliasResult NVARCHAR(MAX)
EXEC sp_executesql @SQLAlias= @SQLAliasResult OUTPUT
select @SQLAliasResult
--将sp_execute结果赋给一个变量,@SQLAliasResult.It给出NULL而不是exec结果
-- 目的是将上面的结果(@SQLAliasResult) 与belwo 查询部分连接起来形成一个完整的查询
set @SQLFinal='SELECT
ID,Name,custid '
+@SQLAliasResult+
' FROM dbo.tableCustomer where custid=71'
EXEC @SQLFinal
-- 如何将查询执行结果赋值到变量中执行@SQLFinal ?
---@SQLAliasResult
的输出
,col1 as [201911]
,col2 as [201912]
,col1 as [202001]
,col2 as [202002]
--@SQLFinal的内容
SELECT
ID,Name,custid
,col1 as [201911]
,col2 as [201912]
,col1 as [202001]
,col2 as [202002]
FROM dbo.tableCustomer where custid=71
exec @SQLFinal 将从 dbo.tableCustomer 生成的别名
中给出所需的输出
我认为第2行不需要动态查询,我看不到动态字段。另外,我认为你需要这样的东西:
DECLARE @Columns TABLE(
ColumnName SYSNAME
)
INSERT INTO @Columns VALUES ( 'Column1' ), ( 'Column2' );
DECLARE @SelectString VARCHAR(255)
-- This is the sentence that is going to concat everything
SELECT @SelectString = ISNULL( @SelectString + ', ', '' ) + ColumnName
FROM @Columns;
-- Execute this or do what you need
SELECT @SelectString;
我正在尝试使用最终查询可以执行的动态列 name.So 进行查询
DECLARE @SQLFinal NVARCHAR(MAX)
DECLARE @SQLAlias NVARCHAR(MAX)='SELECT '',''+cast(ColumnName as varchar(20)) + '' as '' + cast(ColAliasName as varchar(20)) collate Latin1_General_CI_AS from #colandAlias'
DECLARE @SQLAliasResult NVARCHAR(MAX)
EXEC sp_executesql @SQLAlias= @SQLAliasResult OUTPUT
select @SQLAliasResult
--将sp_execute结果赋给一个变量,@SQLAliasResult.It给出NULL而不是exec结果
-- 目的是将上面的结果(@SQLAliasResult) 与belwo 查询部分连接起来形成一个完整的查询
set @SQLFinal='SELECT
ID,Name,custid '
+@SQLAliasResult+
' FROM dbo.tableCustomer where custid=71'
EXEC @SQLFinal
-- 如何将查询执行结果赋值到变量中执行@SQLFinal ?
---@SQLAliasResult
的输出,col1 as [201911]
,col2 as [201912]
,col1 as [202001]
,col2 as [202002]
--@SQLFinal的内容
SELECT
ID,Name,custid
,col1 as [201911]
,col2 as [201912]
,col1 as [202001]
,col2 as [202002]
FROM dbo.tableCustomer where custid=71
exec @SQLFinal 将从 dbo.tableCustomer 生成的别名
中给出所需的输出我认为第2行不需要动态查询,我看不到动态字段。另外,我认为你需要这样的东西:
DECLARE @Columns TABLE(
ColumnName SYSNAME
)
INSERT INTO @Columns VALUES ( 'Column1' ), ( 'Column2' );
DECLARE @SelectString VARCHAR(255)
-- This is the sentence that is going to concat everything
SELECT @SelectString = ISNULL( @SelectString + ', ', '' ) + ColumnName
FROM @Columns;
-- Execute this or do what you need
SELECT @SelectString;