2010-04-23 25 views
0

今天有兩個問題,我是一個忙碌的蜜蜂,幸運的是我有一個很棒的社區!T-SQL語法問題否則,如果風格邏輯

我在這裏的問題是這樣的:

我有一個領域,我需要基於現有的現場數據進行更新。

If Gender = F then foo = 1 

If Gender = M then foo = 2 

If Gender = Male then foo = 2 

If Gender = Female then foo = 1 

If Gender is not above then foo = 3 

以下是我有:

update EmailAddresses 
set Priority1 = '1' 
where GENDER__C = 'Female' 

update EmailAddresses 
set Priority1 = '2' 
where GENDER__C = 'Male' 

update EmailAddresses 
set Priority1 = '1' 
where GENDER__C = 'F' 

update EmailAddresses 
set Priority1 = '2' 
where GENDER__C = 'M' 

update EmailAddresses 
set Priority1 = '3' 
where GENDER__C not in (select 'Female', 'Male', 'F', 'M') 

任何幫助,非常感謝!它的星期五!喔呼

+0

沒關係。在我寫這篇評論時,有答案出現了。 – 2010-04-23 14:58:35

回答

3
update EmailAddresses set 
    Priority1 = case GENDER__C 
     when 'Female' then 1 
     when 'F' then 1   
     when 'Male' then 2 
     when 'M' then 2 
     else 3 end 
+0

你鑽石,下次記住!有一個很好的週末伴侶。 – Yoda 2010-04-23 14:57:43

+2

如果你發現答案有幫助,upvote和接受答案將不勝感激;) – 2010-04-23 14:59:03

+0

當然,標準程序,十分鐘等待稍微討厭接受:) – Yoda 2010-04-23 15:03:01

4

將其更改爲一個CASE語句:

UPDATE EmailAddresses 
SET Priority1 = Case 
    When GENDER_C IN ('Female', 'F') Then '1' 
    When GENDER_C IN ('Male', 'M') Then '2' 
    Else '3' 
End 
FROM EmailAddresses