如何通过与其他结果集值进行比较来更改结果集中的列名称

时间:2013-12-04 04:35:22

标签: sql sql-server

我们可以将选择查询结果存储在变量中并迭代该变量的每个项目。例如

select labelname from controlType
--gives me
labelname
----------
Employee Name
Employee Address
IsActive
DOB
----------

我有另一张桌子targetTable,其中的库存为   EmployeeName,
EmployeeAddress,
IsActvie,
DOB

你可以看到这些是我从结果集获得的相同列,除了空格。我想选择格式名称为targetTable的所有列,如结果集中所示。例如,应该'Employee Name'而不是EmployeeName

这只是一个例子。在我目前的情况下,我不知道有多少列,结果集是什么。我的想法是将结果集存储在变量中,并在选择目标表的列时执行一些逻辑。如何做到这一点。请协助。

2 个答案:

答案 0 :(得分:0)

使用Table变量存储您需要选择的列。这是一个关于表变量的精彩教程。 http://odetocode.com/articles/365.aspx

然后通过循环表变量中的列名来动态构造SQL语句。

最后,使用EXECsp_executesql来执行刚刚生成的动态sql。这是一个例子:http://www.sommarskog.se/dynamic_sql.html

答案 1 :(得分:0)

无需任何变量,您可以在查询后使用并在#Temp变量中插入所有记录,然后循环遍历

Select Id,labelname Into #Temp from controlType
Declare @Id int

While (Select Count(*) From #Temp) > 0
 Begin

Select Top 1 @Id = Id From #Temp

--insert your logic here

Delete #Temp Where Id = @Id

End