【发布时间】:2019-06-06 06:25:37
【问题描述】:
我有两种解决方案可以从表中选择一些数据。
解决方案 1
SELECT [ID]
,[SPAU10_EA]
,[SPAU10_EQ]
,[SPAU10_ore1]
,[SPAU10_nivel]
,[DateTime]
FROM [dbo].[TblSPAU10]
解决方案 2
我有一个带有参数的存储过程,它返回与上述查询相同的结果。 SP的查询是这样的:
ALTER PROCEDURE [dbo].[PS_SpauOPompa]
@DataStart datetime,
@DataStop datetime,
@val int
AS
BEGIN
SET NOCOUNT ON;
declare @sql NVARCHAR(max)
declare @col1 varchar (25)
declare @col2 varchar(25)
declare @col3 varchar (25)
declare @col4 varchar (25)
declare @col5 varchar (25)
declare @col6 varchar (25)
set @col1='ID'
set @col2='SPAU'+CONVERT(VARCHAR, @val)+'_EA'
set @col3='SPAU'+CONVERT(VARCHAR, @val)+'_EQ'
set @col4='SPAU'+CONVERT(VARCHAR, @val)+'_ore1'
set @col5='SPAU'+CONVERT(VARCHAR, @val)+'_nivel'
set @col6='DateTime'
set @sql= 'select [ID], ' + @col2 + ',' + @col3 + ',' + @col4 + ',' + @col5 + ',' + @col6 + ' FROM [DBRap].[dbo].[TblSPAU'+CONVERT(VARCHAR, @val)+ '] WHERE DateTime between '''+CONVERT(VARCHAR(25), @DataStart,121)+ ''' and '''+CONVERT(VARCHAR(25), @DataStop,121)+''';'
print @sql;
EXEC sp_executesql
@sql,
N'@DataStart datetime, @DataStop datetime, @val int',
@DataStart, @DataStop, @val;
END
--execute [PS_SpauOPompa] '2018-12-13 15:58:46.940', '2018-12-21 10:51:10.713', 10
我想结合这两个解决方案,这意味着不是 @sql 字符串来放置来自第一个解决方案的选择查询。我现在面临的问题是:如何将varchar变量转换为[column_name]?
我在 sp 中尝试过类似这样的操作,但没有成功:
SELECT @col1
,@col2
,@col3
,@col4
,@col5
,@col6
FROM [dbo].[TblSPAU10]
【问题讨论】:
标签: sql-server-2008 select stored-procedures dynamic-sql