迭代列中的单元格

时间:2015-01-06 09:48:13

标签: sql sql-server-2008

我有一个充满值的表,但是我想在临时表中操作这些数据!下面显示了该表的一个示例(这不是我的实际表格)!

enter image description here

所以说现在我要遍历行名称和名称为john的位置我想将其更改为Simon,其中名称是Carol我想改为Mike(这只是一个例子给我一个想法需要什么)。下表也是一个正在创建的临时表,因此在创建之后我想通过该列!下面显示了创建临时表的代码。

IF OBJECT_ID('tempdb..#LocalTempTable') IS NOT NULL
    DROP TABLE #LocalTempTablew


CREATE TABLE #LocalTempTable(
Source varchar(50), 
Value int,
Name varchar(150),
Date date)


insert into #LocalTempTable (Source, Value, Name, Date)
SELECT 
  table1.sourceID,
  table2.value,
  table1.name,
  table2.Timestamp
FROM         table1 INNER JOIN
                  Source ON table1.SourceID = table2.ID

SELECT Name, CASE Name
  WHEN 'John' THEN Name = 'Simon'
  WHEN 'Carol' THEN Name = 'Mike'
END
FROM #LocalTempTable

但是,当我运行此查询时,它会超时!

1 个答案:

答案 0 :(得分:2)

这不需要光标但应该能够执行以下操作:

UPDATE T
SET Name = CASE Name 
            WHEN 'John' THEN 'Simon'
            WHEN 'Carol' THEN 'Mike'
            ELSE Name
          END
FROM Table1 T
<insert needed join and where clauses as needed>

基本上这会更新整个Table1,但是你可以在更新查询的FROM部分中创建更复杂的连接条件和WHERE;只要你最后更新一个表。