Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询将表中的行移动到列,并添加别名_Sql_Sybase_Rows_Calculated Columns - Fatal编程技术网

SQL查询将表中的行移动到列,并添加别名

SQL查询将表中的行移动到列,并添加别名,sql,sybase,rows,calculated-columns,Sql,Sybase,Rows,Calculated Columns,我试图从一个数据库中获取数据,并将其转换为第二个数据库的格式,其中模式不同。我试图将一个表的多行中的数据转换成一行,并使用一些逻辑来更改字段名。我将有一个唯一的ID(encounterID),它将是结果表中的一个键,并且是多行中的一个外键 这是我想要的输出模式,一个临时表: CREATE TABLE #tmpSurgery ( EncounterID INT NULL, RvAmplitude DECIMAL(7,2) NULL, RvImpedance DECIMAL(7,2)

我试图从一个数据库中获取数据,并将其转换为第二个数据库的格式,其中模式不同。我试图将一个表的多行中的数据转换成一行,并使用一些逻辑来更改字段名。我将有一个唯一的ID(encounterID),它将是结果表中的一个键,并且是多行中的一个外键

这是我想要的输出模式,一个临时表:

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-和ARIAL-的字段,用于振幅、脉冲宽度、阻抗、电压和电流。My Source table#TMCONTESS包含以下列:

LeadID
EncounterID
LeadValue
Amplitude
PulseWidth
Impedance
Voltage
Current
其中,LeadValue位于('Rv'、'Lv'、'RvLv'、'Atrial')中,EncounterID相同,LeadID是字段中每一行的唯一键,不需要在结果表中

在我的案例中,每次遇到的情况通常只有两行,但LeadValue可以是上述两个不同的LeadValue中的任意两行(决不是两个“Lv”、“两个”Rv或“RvLv”等,而是一个“Lv”和一个“心房”,或一个“心房”和一个“RvLv”)

最后,我的问题是:

如何从#tms请求更新#tmpSurgery中选择值,以便根据LeadValue更新适当的值,这样我就有一行了?

这应该可以:

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'

请实际查看。

非常感谢,并感谢您向我介绍DataExplorer。很酷的东西。