我正在尝试将来自不同行的数据合并为一列,这仅解决了一个小问题。
declare @RitID int = 16
select ...,
( select distinct
ISNULL(LTRIM(RTRIM(r2.LotNr)), LTRIM(RTRIM(r.LotNr))) + '+' as 'data()'
from tblExtraBestemming eb2
inner join tblRit r2 on eb2.RitID = r2.RitID
where eb2.BestemmingID = eb.BestemmingID
and eb2.BestemmingTypeID = eb.BestemmingTypeID
and ( (eb.CombinedChildExtraBestemmingID is null and eb2.RitID = @RitID)
or
(eb.CombinedChildExtraBestemmingID is not null and eb2.RitID in (select r4.RitID from tblRit r4 where r4.MasterRitID = @RitID) )
)
for XML PATH('')
) as LotNr
from tblExtraBestemming eb
where ...
这将为LotNr列返回正确的数据,像这样
GTT18196
GTT18197
GTT18198+ GTT18199
现在我唯一的问题是结果中第三行+
后面的空格,我该如何摆脱呢?
我希望这个结果
GTT18196
GTT18197
GTT18198+GTT18199
PS,实际上每行的末尾还有一个+
,但是客户端已将其删除。我以为我最好提起这个了。
编辑
我检查了数据,数据的结尾或开头没有空格
编辑
查询已更新,如@Larnu所建议
编辑
如果我检查表中的数据,这就是结果
select '/' + r.LotNr + '/' from tblRit r where r.RitID in (50798, 50799)
COLUMN1
-------
/GTT18198/
/GTT18199/
所以在我看来,数据前后没有字符
答案 0 :(得分:1)
只需从查询中删除AS 'data()'
(在上述情况下不需要)。
如果尾随+
是一个问题,请将其移到开头并使用STUFF
函数从结果中截去第一个字符。