2009-10-14 174 views
2

我有一個包含字段RACE,ETHNICITY和ETH的數據庫表。我需要評估RACE和ETHNICITY字段並使用一系列情況填充ETH: 如果Race = W且Ethncity = 1,那麼ETH =高加索等。基於兩個其他字段中的值更新字段

有人可以告訴我關於如何將存儲過程完成這個?

回答

9

我願意做你的更新CASE語句:

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 

在這種情況下,你可以有你想要在你的case語句中的每一行的任何條件。在一些行中,你可以做兩個條件(如前兩行),在其他行中你可以做一個條件(如第三行)。

+0

這個伎倆。謝謝!! – SidC 2009-10-14 18:56:39

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 2009-10-14 19:00:31

相關問題