Значения столбцов в первой таблице относятся к именам столбцов во второй таблице.Как вытащить значения из второй таблицы? - PullRequest
1 голос
/ 03 мая 2011

Первое сообщение, в течение месяца я интенсивно искал ответ на этот вопрос и подумал, что я бы просто попросил экспертов.

Я заполнил таблицу счетами пациентов, которые получали услуги в больнице.Я тяну колонки, перечисляющие исполняющего врача по каждой из их процедур.Значения этих столбцов являются порядковыми номерами, которые указывают на набор столбцов во второй таблице.Столбцы во второй таблице на самом деле содержат необходимые мне идентификаторы врачей.

Пример:

ТАБЛИЦА 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

ТАБЛИЦА 2

Account:       Physician1     Physician2     Physician3    Physician4    Physician5

Patient1       500123         500456         500789        600123        600456
Patient2       400321         500700         300876        456789        987654
Patient3       300500         800700         0             0             0

Мне нужно обновить записи в ТАБЛИЦЕ 1 значениями из ТАБЛИЦЫ 2, где значение в ТАБЛИЦЕ 1 относится к имени столбца из ТАБЛИЦЫ 2.

ПРИМЕР

Пациент1 перенес процедуру 1 с помощью '500456' (значение Phys_Proc1 равно 2, что относится к полю Physician2 в ТАБЛИЦЕ 2.)

Любая помощь будет принята с благодарностью.Даже подсказка на этот счет дала бы мне направление на поиск. Указывать на конкретное имя функции для поиска лучше, чем то, что у меня есть сейчас (ничего.) Я попробовал обширный оператор CASE, но он не извлекал значения длякаждой учетной записи пациента и извлекла значения из ТАБЛИЦЫ 2 для первой учетной записи и применила ее ко всем записям пациентов.

1 Ответ

1 голос
/ 03 мая 2011
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

Примечание: я не пробовал это для синтаксиса. Я надеюсь, что это даст вам представление о том, как действовать дальше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...