如何将两行合并为一

时间:2018-07-04 14:13:58

标签: sql-server tsql

是否可以将这两个记录合并在一起?在WARD_NUMBER列下面的示例中,患者将留在病房的标识符。

时间表是患者在上午10:10到达病房,并于当天22:48出院。我们在系统中看到的是病房内的病床转移,因为此ISNT是病房转移,因此触发了此问题

我想知道是否可以仅显示一行数据(始终保留第一个WARD_STAY_IDENTIFIERSTART_DATE_TIME_WARD_STAY,但合并以包含第二个END_DATE_TIME_WARD_STAY

例如

('600054394373', '2018-01-05 10:10:00.000', '2018-01-05 22:48:49.000', '600007275916', '3400003723'),

TIA

DECLARE @CDI_APC_WARD_STAY TABLE (HOSPITAL_PROVIDER_SPELL_NUMBER  varchar(50),
                          START_DATE_TIME_WARD_STAY datetime, 
                          END_DATE_TIME_WARD_STAY datetime,
                          WARD_STAY_IDENTIFIER varchar(50),
                          WARD_NUMBER varchar(50)
                         )

INSERT INTO @CDI_APC_WARD_STAY
    VALUES 
    ('600054394373', '2018-01-05 10:10:00.000', '2018-01-05 11:50:00.000', '600007275916', '3400003723'),
    ('600054394373', '2018-01-05 11:50:00.000', '2018-01-05 11:54:00.000', '600007276481', '3400003723'),
    ('600054394373', '2018-01-05 11:54:00.000', '2018-01-05 20:22:00.000', '600007276510', '3400003723'),
    ('600054394373', '2018-01-05 20:22:00.000', '2018-01-05 20:23:00.000', '600007279380', '3400003723'),
    ('600054394373', '2018-01-05 20:23:00.000', '2018-01-05 22:48:49.000', '600007279385', '3400003723'),
    ('600054394373', '2018-01-05 22:48:49.000', '2018-01-06 20:24:04.000', '600007279710', '3400003688')

1 个答案:

答案 0 :(得分:0)

SELECT 
    c1.HOSPITAL_PROVIDER_SPELL_NUMBER,
    FirstDate = MIN(c1.START_DATE_TIME_WARD_STAY),
    LastDate = MAX(c2.END_DATE_TIME_WARD_STAY),
    WardStayID = MIN(c1.WARD_STAY_IDENTIFIER),
    c1.WARD_NUMBER
FROM
    @CDI_APC_WARD_STAY c1
    JOIN
    @CDI_APC_WARD_STAY c2 ON c2.HOSPITAL_PROVIDER_SPELL_NUMBER = c1.HOSPITAL_PROVIDER_SPELL_NUMBER
      AND c2.START_DATE_TIME_WARD_STAY = c1.END_DATE_TIME_WARD_STAY
      AND c2.WARD_NUMBER = c1.WARD_NUMBER
GROUP BY
    c1.HOSPITAL_PROVIDER_SPELL_NUMBER,
    c1.WARD_NUMBER;
相关问题