Sql server 如何将两行合并为一行

Sql server 如何将两行合并为一行,sql-server,tsql,Sql Server,Tsql,有可能把这两条记录合并在一起吗?在下面的示例中,病房编号列是患者将入住的病房的标识符 时间线是患者于上午10:10来到病房,并于当天22:48出院。我们在系统中看到的是病房内的床位转移,这引发了这个问题,因为这不是病房转移 我想知道的是,是否可以只显示一行数据(始终保留第一个病房停留\u标识符和开始日期\u时间\u病房停留,但合并以包括第二个结束日期\u时间\u病房停留 比如说 ('600054394373', '2018-01-05 10:10:00.000', '2018-01-05 22:

有可能把这两条记录合并在一起吗?在下面的示例中,
病房编号
列是患者将入住的病房的标识符

时间线是患者于上午10:10来到病房,并于当天22:48出院。我们在系统中看到的是病房内的床位转移,这引发了这个问题,因为这不是病房转移

我想知道的是,是否可以只显示一行数据(始终保留第一个
病房停留\u标识符
开始日期\u时间\u病房停留
,但合并以包括第二个
结束日期\u时间\u病房停留

比如说

('600054394373', '2018-01-05 10:10:00.000', '2018-01-05 22:48:49.000', '600007275916', '3400003723'),
短暂性脑缺血发作


对于样本数据来说,这很简单。但是……对于同一个患者的住院时间,您是否有3行以上的数据?多个单独的住院时间?是的,很抱歉,您确实可以,比如说,在同一病房有6个床位转移,作为病房住院时间,我需要将第一个开始日期、标识符和最后一个结束日期显示为完整的病房住院时间。患者的标识是什么耳鼻喉科?您应该有更多的数据作为所需的输出。其他地方有一个患者标识符,但对于这一点,医院提供者的拼写编号对于住院的患者来说是唯一的,无论是1天还是1年。病房住院标识符处于事务级别,并且对于此表是唯一的,但是病房编号字段会重复多次这是不正确的,因为该表是针对病房住院的,应该只反映整个病房住院的开始和结束日期。您仍然没有提供所需的输出。我编辑了原始帖子以突出显示多个记录,最后一个是显示“是”,但显示它们最终移动到另一个病房(WARD_编号)样本数据现在应该是什么样子?刚刚编辑了帖子中的文本,现在就要回家了,所以会在早上(英国时间)查看更新的样本数据。谢谢,我会将此标记为答案,因为我给了我一个很好的开始位置,顺便说一句,尽管这现在排除了所有记录(超过90%的情况下,根本没有任何转移,例如只有一个记录有开始/结束日期,是否有任何方法也可以将其考虑在内??
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')
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;