2011-12-01 2 views
1

Я пытаюсь получить данные из одной базы данных и поместить ее в формат второй базы данных, где схемы разные. Я пытаюсь получить данные, которые находятся в нескольких строках одной таблицы в одну строку, с некоторой логикой для изменения имен полей. У меня будет уникальный ID (встречный идентификатор), который будет ключом в таблице результатов и является внешним ключом в нескольких строках.SQL Query для перемещения строк в столбцы в таблице плюс псевдонимы

Вот мой желаемый результат схемы, таблицы температуры:

CREATE TABLE #tmpSurgery 
(  
EncounterID INT NULL, 
RvAmplitude DECIMAL(7,2) NULL, 
RvImpedance DECIMAL(7,2) NULL, 
RvPulseWidth DECIMAL(7,2) NULL, 
RvVoltage DECIMAL(7,2) NULL, 
RvCurrent DECIMAL(7,2) NULL, 
LvAmplitude DECIMAL(7,2) NULL, 
LvImpedance DECIMAL(7,2) NULL, 
LvPulseWidth DECIMAL(7,2) NULL, 
LvVoltage DECIMAL(7,2) NULL, 
LvCurrent DECIMAL(7,2) NULL, 
RvLvAmplitude DECIMAL(7,2) NULL, 
RvLvImpedance DECIMAL(7,2) NULL, 
RvLvPulseWidth DECIMAL(7,2) NULL, 
RvLvVoltage DECIMAL(7,2) NULL, 
RvLvCurrent DECIMAL(7,2) NULL, 
AtrialAmplitude DECIMAL(7,2) NULL, 
AtrialImpedance DECIMAL(7,2) NULL, 
AtrialPulseWidth DECIMAL(7,2) NULL, 
AtrialVoltage DECIMAL(7,2) NULL, 
AtrialCurrent DECIMAL(7,2) NULL 
) 

Обратите внимание, что есть поля с приставками RV-, LV-, RvLv- и Atrial- амплитудных, Pulsewidth, импеданс, напряжение и Ток в разных столбцах. Мои Исходная таблица #tmpLeads имеет следующие столбцы:

LeadID 
EncounterID 
LeadValue 
Amplitude 
PulseWidth 
Impedance 
Voltage 
Current 

Где LeadValue находится в ('Rv', 'Lv', 'RvLv', 'Мерцательная') и EncounterID одно и то же, и LeadID является уникальным ключом для каждой строки в поле и не обязательно должна быть в таблице результатов.

В моем случае, как правило, для каждого EncounterID должно быть только два ряда в #tmpLeads, но LeadValues ​​могут быть любыми двумя отдельными LeadValues ​​выше (никогда два «Lv», «два» Rv или «RvLv» и т. Д. но «Lv» и «Мерцательная», или «Мерцательная» и «RvLv»)

Итак, в конце концов, мои вопросы:.

Как выбрать значения из #tmpLeads обновить #tmpSurgery, так что я обновляю соответствующие значения на основе LeadValue, поэтому у меня есть одна строка?

ответ

2

Это должно работать:

INSERT INTO #tmpSurgery 
(
    EncounterID, 
    RvAmplitude, 
    RvImpedance, 
    RvPulseWidth, 
    RvVoltage, 
    RvCurrent, 
    LvAmplitude, 
    LvImpedance, 
    LvPulseWidth, 
    LvVoltage, 
    LvCurrent, 
    RvLvAmplitude, 
    RvLvImpedance, 
    RvLvPulseWidth, 
    RvLvVoltage, 
    RvLvCurrent, 
    AtrialAmplitude, 
    AtrialImpedance, 
    AtrialPulseWidth, 
    AtrialVoltage, 
    AtrialCurrent 
) 

SELECT 
    tblDistinct.EncounterID, 
    tblRv.Amplitude, 
    tblRv.Impedance, 
    tblRv.PulseWidth, 
    tblRv.Voltage, 
    tblRv.[Current], 
    tblLv.Amplitude, 
    tblLv.Impedance, 
    tblLv.PulseWidth, 
    tblLv.Voltage, 
    tblLv.[Current], 
    tblRvLv.Amplitude, 
    tblRvLv.Impedance, 
    tblRvLv.PulseWidth, 
    tblRvLv.Voltage, 
    tblRvLv.[Current], 
    tblAtrial.Amplitude, 
    tblAtrial.Impedance, 
    tblAtrial.PulseWidth, 
    tblAtrial.Voltage, 
    tblAtrial.[Current] 
FROM (SELECT DISTINCT EncounterID FROM #tmpLeads) as tblDistinct 
LEFT OUTER JOIN #tmpLeads as tblRv 
    ON tblRv.EncounterID = tblDistinct.EncounterID 
    AND tblRv.LeadValue = 'Rv' 
LEFT OUTER JOIN #tmpLeads as tblLv 
    ON tblLv.EncounterID = tblDistinct.EncounterID 
    AND tblLv.LeadValue = 'Lv' 
LEFT OUTER JOIN #tmpLeads as tblRvLv 
    ON tblRvLv.EncounterID = tblDistinct.EncounterID 
    AND tblRvLv.LeadValue = 'RvLv' 
LEFT OUTER JOIN #tmpLeads as tblAtrial 
    ON tblAtrial.EncounterID = tblDistinct.EncounterID 
    AND tblAtrial.LeadValue = 'Atrial' 

Проверьте это в действии here on SEDE.

+0

Большое спасибо, и спасибо, что ознакомили меня с DataExplorer. Классная вещь. –

 Смежные вопросы

  • Нет связанных вопросов^_^