2013-10-08 7 views
0

SQL Server 2008, ~ 1 миллион строк в dbo.VDATASQL Server: обновление/замены нескольких полей в нескольких таблицах

Таблица dbo.VDATA

PARTNO     UDL3   ........ 
'100 - TXT'  '31OZ' 
'101 - TXT'  '32 OZ' 

Таблица dbo.VDAT_AUX

PARTNOAUX   UDL12   ........ 
'100 - TXT'    '' 
'101 - TXT'    '' 

Что мне нужно достигнуто:

SELECT * 
FROM dbo.VDATA 
WHERE (PARTNO LIKE '% - TXT') 

for each row in dbo.VDATA 
set @Var_PARTNO-TEMP = PARTNO 
set PARTNO = UDL3 & ' - TXT' 
     ##Add ' - TXT' and set as PARTNO value 
set dbo.VDAT_AUX.UDL12 = (REPLACE @Var_PARTNO-TEMP, ' - TXT', '') 
     ##Remove ' - TXT' and set as UDL12 value 
set dbo.VDAT_AUX.PARTNOAUX = dbo.VDATA.PARTNO 

Пример желаемого результата:

Таблица dbo.VDATA

PARTNO     UDL3   ........ 
'31OZ - TXT'    '31OZ' 
'32 OZ - TXT'    '32 OZ' 

Таблица dbo.VDAT_AUX

PARTNOAUX   UDL12   ........ 
'31OZ - TXT'   '100'  
'32 OZ - TXT'   '101' 

Я могу выбрать строки, которые я хочу, но я довольно потерял о том, как шаг через и перетасовать данные, как мне это нужно ... Любая помощь/совет будут очень признательны, заблаговременно! :)

ответ

0

Это нам мое предположение основано на информации:

UPDATE vaux 
SET UDL12 = REPLACE(v.PARTNO, ' - TXT', ''), 
    PARTNO=v.UDL3, 
    PARTNOAUX=v.PARTNO 
FROM dbo.VDATA AS v 
JOIN dbo.VDAT_AUX AS vaux ON v.PARTNO=vaux.PARTNOAUX 
WHERE v.PARTNO LIKE '% - TXT' 

Последний набор «PARTNOAUX = v.PARTNO» может быть просто не требуется - как РЕГИСТРИРУЙТЕСЬ не будет работать, если значение WASN Я уже прав.

Очевидно ... вы хотите попробовать это на некоторых тестовых данных, а не вживую.

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