2014-09-04 4 views
0

У меня есть таблица, каккомплекс SQL запросов обновления

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

Если identfier является тикер то BBG обновляется со значением столбца тикер и равно SEDOL identifier.But Если я вставить новый identidier в колонке идентификаторов, то он должен работать это тоже. Ex, если я вставляю 'occ' в столбец идентификатора, столбец bbg должен быть обновлен значением оксо-столбца. После добавления значения идентификатора я добавлю столбец ок.

Я хочу Ouput как ...

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

Примечание: Запрос должен быть динамичным

+0

Что? У вас есть одна или две таблицы? – Elias

+0

Это, вероятно, не должно быть в одной таблице. –

ответ

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) 

И хороший FIDDLER Demo доказать мой случай ....

+0

Это 'bbg', а не' BBQ' ... Что я думал ???? –

+0

ThankU ... Он работает сейчас – user3751161

Смежные вопросы