2011-05-03 6 views
1

첫 번째 게시물에 대한 답변을 한 달 동안 광범위하게 검색하여 전문가에게 물어 보았습니다.첫 번째 테이블의 열 값은 두 번째 테이블의 열 이름을 참조합니다. 두 번째 테이블에서 값을 가져 오는 방법은 무엇입니까?

저는 병원에서 서비스를받은 환자 계정이있는 테이블을 채 웁니다. 나는 각자의 처치에 대해 수행하는 의사를 열거하는 기둥을 당기고있다. 이러한 열의 값은 두 번째 테이블의 열 집합을 가리키는 시퀀스 번호입니다. 두 번째 테이블의 열에는 실제로 필요한 의사의 식별자가 들어 있습니다.

예 :

표 1

Account:  Phys_Proc1  Phys_Proc2  PhysProc3  PhysProc4  PhysProc5` 

Patient1  2    5    1    4    5 
Patient2  1    3    3    4    0 
Patient3  2    0    0    0    0 

TABLE 내가 업데이 트를 표 2의 값으로 표 1의 레코드를 필요로 2

Account:  Physician1  Physician2  Physician3 Physician4 Physician5 

Patient1  50
Patient2  400321   500700   300876  456789  987654 
Patient3  300500   800700   0    0    0 

값 표 1에서 표 2의 컬럼 이름을 참조하십시오.

Patient1이

어떤 도움을 크게 감상 할 수있다 '500456'에 의해 수행 procedure1 (Phys_Proc1의 값은 표 2에 Physician2의 필드를 참조 "2"입니다)했다. 이 시점에서의 힌트조차도 내가 들여다 볼 수있는 방향을 제시 할 것이다. 검색 할 특정 함수 이름을 가리키면 나는 지금 가지고있는 것보다 낫다. (나는 아무것도 아니다.) 나는 광범위한 CASE 문을 시도했지만, 그 값을 가져 오지 않았다. 각 환자 계정을 생성하고 첫 번째 계정에 대해 표 2의 값을 가져와 모든 환자 기록에 적용했습니다.

+4

개인적으로 나는 올바르게 정규화 된 테이블을 재 설계하고 나면이 악몽을 갖지 않을 것입니다. 나는 환자 테이블, 의사 테이블 및 프로 시저 테이블을 작성한 다음 PatientId, PhysicianID, ProcedureId 및 날짜가있는 테이블을 작성합니다. – HLGEM

답변

1
UPDATE Table2 
SET 
Physc_Proc1 = 
    CASE WHEN Phys_Proc1 = 1 Then Table2.Physician1 
    CASE WHEN Phys_Proc1 = 2 Then Table2.Physician2 
    CASE WHEN Phys_Proc1 = 3 Then Table2.Physician3 
    CASE WHEN Phys_Proc1 = 4 Then Table2.Physician4 
    CASE WHEN Phys_Proc1 = 5 Then Table2.Physician5 
    ELSE NULL 
END, 

Physc_Proc2 = 
    CASE WHEN Phys_Proc2 = 1 Then Table2.Physician1 
    CASE WHEN Phys_Proc2 = 2 Then Table2.Physician2 
    CASE WHEN Phys_Proc2 = 3 Then Table2.Physician3 
    CASE WHEN Phys_Proc2 = 4 Then Table2.Physician4 
    CASE WHEN Phys_Proc2 = 5 Then Table2.Physician5 
    ELSE NULL 
END, 

PhyscProc3 = 
    CASE WHEN PhysProc3 = 1 Then Table2.Physician1 
    CASE WHEN PhysProc3 = 2 Then Table2.Physician2 
    CASE WHEN PhysProc3 = 3 Then Table2.Physician3 
    CASE WHEN PhysProc3 = 4 Then Table2.Physician4 
    CASE WHEN PhysProc3 = 5 Then Table2.Physician5 
    ELSE NULL 
END, 

PhyscProc4 = 
    CASE WHEN PhysProc4 = 1 Then Table2.Physician1 
    CASE WHEN PhysProc4 = 2 Then Table2.Physician2 
    CASE WHEN PhysProc4 = 3 Then Table2.Physician3 
    CASE WHEN PhysProc4 = 4 Then Table2.Physician4 
    CASE WHEN PhysProc4 = 5 Then Table2.Physician5 
    ELSE NULL 
END, 

PhyscProc5 = 
    CASE WHEN PhysProc5 = 1 Then Table2.Physician1 
    CASE WHEN PhysProc5 = 2 Then Table2.Physician2 
    CASE WHEN PhysProc5 = 3 Then Table2.Physician3 
    CASE WHEN PhysProc5 = 4 Then Table2.Physician4 
    CASE WHEN PhysProc5 = 5 Then Table2.Physician5 
    ELSE NULL 
END 
FROM Table2 
INNER JOIN Table1 
ON Table2.Account = Table1.Account 

참고 :이 구문을 사용하지 않았습니다. 나는 이것이 당신에게 더 나아가는 방법에 대한 아이디어를 줄 것을 희망한다.

+0

당신은 참으로 신들 가운데 있습니다. 이것은 내가 필요한 것입니다. 내 환경과 일치하는 몇 가지 사소한 개조하면 완벽하게 작동합니다. 고마워요, 당신이 얼마나 많은 도움을 주 었는지 모르실 것입니다. –

관련 문제