使用select语句更新动态列值

时间:2014-06-25 13:18:21

标签: mysql sql sql-server database stored-procedures

我有两个临时表:temp1和temp 2.

temp 1是

Reg Key | Player Name | Age
----------------------------
1       |  Null       | Null
2       |  Null       | Null
3       |  Null       | Null

临时2是

Reg Key | Question Name | value
----------------------------
1       | Player Name   | Ronaldo
2       | Player Name   | Zedan
1       | Age           | 35
2       | Age           | 38

在临时1中,列名称是动态的,除了[Reg Key],例如我需要在临时1中使用[Reg Key] 1更新行,并使用' Ronaldo'从表格2中得出35。

我曾经循环从temp 2获取值并更新temp 1,但表temp 2中的记录现在超过5 000,所以我尝试创建UPDATE查询,但是我不知道如何在运行时获取列名称。

1 个答案:

答案 0 :(得分:0)

听起来像枢轴可以解决这个问题:

select 1 as regkey, 'Player Name' as Question_name, 'Ronaldo' as value into #temp2
union all select 2, 'Player Name', 'Zedan'
union all select 1, 'Age', '35'
union all select 2, 'Age', '38'

Select 
    regkey
    , [Player Name]
    , [Age]
From #temp2
Pivot (max(value) for Question_Name in ([Player Name], [Age])) as pvt