SQL-将多行合并到一个字段中,最后一个字段不带尾随零
我有一个表格,里面有一些数据,我需要输入到1个字段中。该表如下所示: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
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, '')
当然这将是一件我从未考虑过的超级简单的事情。这很有效,非常感谢