SQL-将多行合并到一个字段中,最后一个字段不带尾随零

SQL-将多行合并到一个字段中,最后一个字段不带尾随零,sql,Sql,我有一个表格,里面有一些数据,我需要输入到1个字段中。该表如下所示: FacID | RxBatch | RxNo | Split | AdminTimeNo | AdminTime 123 TEST 2222 1 1 07:00 AM 123 TEST 2222 1 2 123 TEST 2222 1

我有一个表格,里面有一些数据,我需要输入到1个字段中。该表如下所示:

FacID |  RxBatch  |  RxNo  |  Split  |  AdminTimeNo  |  AdminTime
123      TEST        2222       1            1          07:00 AM
123      TEST        2222       1            2
123      TEST        2222       1            3
123      TEST        2222       1            4          08:00 PM
123      TEST        2222       1            5        
4个AdminTimeNo之间可能有时间,因此可能是上午7:00、上午10:00、下午2:00、晚上8:00等。完全可变。无论最后一行中的AdminTimeNo是什么,最后一行中始终有一个“空”AdminTime。“空”AdminTime不是空字段,只是空字段。表中没有空字段

我尝试使用以下STUFF函数将AdminTimes放入单个字段:

STUFF((
    Select ',' + RxAdminTimes.AdminTime
    FROM RxAdminTimes
    Where RxAdminTimes.RxNo = 2222
    AND RxAdminTimes.FacID = 123
    AND RxAdminTimes.RxBatch = 'TEST'
    AND RxAdminTimes.Split = '1'
    FOR XML Path (''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
但这让我在早上7:00,,,晚上8:00,到处都是逗号

我在上面的STUFF函数中添加了两个替换函数,以补偿不同的位置和时间:

REPLACE(REPLACE(STUFF((
                        Select ',' + RxAdminTimes.AdminTime
                        FROM FWDB.RX.RxAdminTimes
                        Where RxAdminTimes.RxNo = 731005
                        AND RxAdminTimes.FacID = 2657
                        AND RxAdminTimes.PatID = 10014695
                        AND RxAdminTimes.RxBatch = 'CF'
                        AND RxAdminTimes.Split = '1'
                        FOR XML Path (''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, ''),',,,',','),',,',',')
基于AdminTime与AdminTimeNo的关系,这会产生更好的结果,但每次都有一个尾随的“,”。在这种情况下,上面的结果是上午07:00,下午09:00,。要删除单个逗号的任何其他替换函数也要删除我想要的逗号。我还没有找到一种方法,只在逗号后面加上“nothing”


我如何做到这一点,没有尾随逗号。我知道STUFF函数会删除前导的逗号,但我还没有找到一个在结尾有空字段的解决方案。TIA只需过滤掉子查询中的空值:

STUFF((
    Select ',' + RxAdminTimes.AdminTime
    FROM RxAdminTimes
    Where RxAdminTimes.RxNo = 2222
    AND RxAdminTimes.FacID = 123
    AND RxAdminTimes.RxBatch = 'TEST'
    AND RxAdminTimes.Split = '1'
    AND RxAdminTimes.AdminTime <> ''  --> remove empty values
    FOR XML Path (''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')

当然这将是一件我从未考虑过的超级简单的事情。这很有效,非常感谢