好了,我在所有2个表:
ColumnName
保持在3列的名称的值Table 1
( Q19243
等),并且还具有被称为对应的列TextValue
持有什么友好描述Q19243
实际上意味着。
因此,有3条记录在Table 2
,1表示在每列中Table 1
。
我想在这些3列重命名Table 1
至等于无论是在TextValue
列在Table 2
。 我想这样做动态的,而不是一个简单的UPDATE
语句来重命名列。 对不起,我没有附上屏幕截图,但我没有看到一个附加按钮,这样做...
如果你运行该代码来创建2个表的一个例子,那么你或许应该有什么,我指的是一个更好的主意。
create table #Table1 (Q19243 varchar(10),Q19244 varchar(10),Q19245 varchar(10))
Create table #Table2 (ColumnName varchar(10),TextValue varchar(50))
Insert into #Table2 select 'Q19243','Provider Name'
Insert into #Table2 select 'Q19244','The Provider You Usually See'
Insert into #Table2 select 'Q19245','How Long Going to Provider'
select * from #Table1
select * from #Table2
drop table #Table1
drop table #Table2
由于列重命名的目的仅仅是为了输出的目的,你可以使用查询表2对创建特定于表1动态的SQL别名在SELECT列名。
(在下面的示例使用在原来的问题的示例代码和仅由是什么之间不同--==============
线)
create table #Table1 (Q19243 varchar(10),Q19244 varchar(10),Q19245 varchar(10))
Create table #Table2 (ColumnName nvarchar(10),TextValue nvarchar(50))
Insert into #Table2 select 'Q19243','Provider Name'
Insert into #Table2 select 'Q19244','The Provider You Usually See'
Insert into #Table2 select 'Q19245','How Long Going to Provider'
select * from #Table1
select * from #Table2
--=========================================
DECLARE @SQL NVARCHAR(MAX)
SELECT @SQL = COALESCE(@SQL + N',', N'SELECT')
+ N' t1.'
+ t2.ColumnName
+ N' AS ['
+ t2.TextValue
+ N']'
FROM #Table2 t2
SET @SQL = @SQL + N' FROM #Table1 t1'
SELECT @SQL
EXEC(@SQL)
--=========================================
drop table #Table1
drop table #Table2
值@SQL
后SELECT @SQL=
查询:
SELECT t1.Q19243 AS [供应商名称],t1.Q19244 AS [提供者大家平时看到的],t1.Q19245 AS [多长时间去提供商] FROM表1#T1
注意:您所需要的方括号中的字段名称别名(从Table2.TextValue值)有字符串中的空格。