2014-09-04 81 views
0

我有表像複雜的SQL更新查詢

Ticker Sedol bbg identifier 
t1  w2 null  Ticker 
t2  w3 null  sedol 

如果identfier是股票,然後BBG與股票列值,並以相同SEDOL identifier.But如果我在標識符列插入新identidier那麼它應該更新工作那也。 例如,如果我在標識符列中插入'occ',應該使用occ列值更新bbg列。 我會在插入標識符值後添加occ列。

我想輸出中像...

Ticker Sedol bbg identifier 
t1  w2 t1  Ticker 
t2  w3 w3  sedol 

注:查詢應該是動態的

+0

什麼?你有一張或兩張桌子嗎? – Elias 2014-09-04 14:32:12

+0

這可能不應該在一個表中。 – 2014-09-04 14:36:44

回答

0

我知道你要的動態,但不會在做什麼?

UPDATE TableName 
SET bbg = CASE 
       WHEN identifier = 'Ticker' 
       THEN Ticker 
       WHEN identifier = 'Sedol' 
       THEN Sedol 
       WHEN identifier = 'occ' 
       THEN occ 
      END 

動態版:

DECLARE @SQL AS VARCHAR(MAX) 
SET @SQL = 'UPDATE TableName 
      SET bbg = CASE ' + 
      STUFF 
      (
       (
        SELECT ' ' + 'WHEN identifier = ''' + c.name + ''' THEN ' + QUOTENAME(c.name) 
        FROM sys.columns c 
          JOIN sys.tables t 
           ON c.object_id = t.object_id 
        WHERE t.name = 'YourTableName' 
          AND c.name <> 'bbg' 
        FOR XML PATH('') 
       ), 
       1, 
       0, 
       '' 
      ) + ' END' 
EXEC (@SQL) 

和一個不錯的提琴手演示來證明我的情況....

+0

它是'bbg'而不是'BBQ' ...我在想什麼? – 2014-09-04 14:54:11

+0

ThankU ...它正在工作 – user3751161 2014-09-05 10:40:25