2013-10-16 4 views
3

NonConf 데이터베이스의 테이블 중 하나를 변경하려고합니다. 현재 우리는 세 가지가 있습니다 예/아니오 필드는 Closed, OpenOnHold입니다. 우리는 더 많은 상태를 추가 할 것이고 새로운 상태에 대한 필드를 계속 추가하는 것은 나쁜 생각이라고 생각합니다. 대신 필드를 Status 필드로 변환하고 싶습니다. 세 개의 필드를 하나로 결합하십시오.

나는 이미 NonConf 테이블에 Status 필드를 추가했습니다. 어떻게 Status를 채우기 위해 UPDATE 쿼리를 사용합니까? 이 라인을 따라

답변

4

당신은 Switch을 사용할 수 있습니다 여러 개의 중첩 된 식 대신에 IIf 식입니다.

UPDATE NonConf AS N 
SET N.Status = 
    Switch 
     (
      N.Closed, "Closed", 
      N.Open, "Open", 
      N.OnHold,"OnHold", 
      True, "" 
     ); 

Switch은 VBA에서 SELECT CASE와 유사한 운영하고 있습니다. 따라서 표현식이 True 인 첫 번째 표현식/값 쌍의 값을 반환합니다. 마지막 표현/값 쌍 (True, "")은 이전 쌍을 지나는 모든 것을 포착합니다. 아마도 빈 문자열 대신 Null 또는 다른 값을 사용하여 출처가 예/아니요 열이 True이 아님을 나타낼 수 있습니다.

2

무엇인가, 당신은 중첩 된 IIF를 통해 하나의 샷에서 Status를 업데이트 한 쿼리를 사용할 수 있습니다

UPDATE yourTable 
SET status = 'Closed' 
WHERE yourTable.Closed = 'Yes' 
    AND status IS NOT NULL 
3

각 상태에 대한 하나 개의 쿼리 :

UPDATE NonConf AS N 
SET N.Status = 
IIF (N.Closed, "Closed", 
IIF(N.Open, "Open", 
IIF(N.OnHold,"OnHold",""))) 
관련 문제