2009-10-14 3 views
2

У меня есть таблица базы данных, содержащая поля RACE, ETHNICITY и ETH. Мне нужно оценить поля RACE и ETHNICITY и заполнить ETH, используя серию случаев: , если Race = W и Ethncity = 1, затем ETH = Caucasian и т. Д.Обновление поля на основе значений в двух других полях

Может кто-нибудь посоветует мне наилучший способ структурирования хранимой процедуры для выполнить это?

ответ

9

я сделать саз в вашем обновлении:

UPDATE yourtable 
    SET Eth = CASE 
       WHEN Race = 'W' AND Ethnicity = 1 THEN 'Caucasian' 
       WHEN Race = 'B' AND Ethnicity = 2 THEN 'African-American' 
       WHEN Race = 'H' THEN 'Hispanic' --Ethnicity is irrelevant 
       ...whatever other pairs of conditions you want... 
      END 
FROM yourtable 

В этом случае, вы можете иметь все условия, вы хотите в каждой строке в вашем случае заявлении. В некоторых строках вы можете выполнить два условия (как в первых двух строках), а в других вы можете сделать это (как в третьей строке).

+0

Это сделало трюк. Благодаря!! – SidC

1

Нормализация данных, создать новую таблицу, с составным первичным ключом Расы + Этничность:

YourNewTable

Race  CHAR(1)  PK 
Ethnicity CHAR(1)  PK 
ETH  VARCHAR(50) 

сделать внешний ключ к вашей другой таблице, и присоединиться показать ETH:

SELECT 
    o.Race 
     ,o.ETHNICITY 
     ,n.ETH 
    FROM YourTable    o 
     INNER JOIN YourNewTable n ON o.Race=n.Race AND o.Ethnicity=n.Ethnicity 
+0

+1, перейдите со столом, а не в ряд утверждений о случаях. – Yishai

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