如何正确格式化XML路径结果

时间:2017-02-02 12:51:52

标签: sql-server tsql sql-server-2016

我必须查询,他们的目的是检索属于where子句的所有条目(在这个例子中并不重要),并将它们组合成一个名为ActualDropOffDateTimeUTC的stingle列,但我遇到的问题是我收到了包含XML标签的正确结果。

如何格式化数据,使结果等于(示例):
2016-11-29T20:56:00 - 2016-11-30T09:27:00

我如何实际收到数据:
<ActualDropOffDateTimeUTC>2016-11-29T20:56:00</ActualDropOffDateTimeUTC><ActualDropOffDateTimeUTC>2016-11-30T09:27:00</ActualDropOffDateTimeUTC>

以下我有两次尝试在列ActualDropOffDateTimeUTCSecondAttempt

列下执行此操作
(
    SELECT DISTINCT
    ActualDropOffDateTimeUTC
    FROM [dbo].[BookingJourneyLinkedCitySprintJobs]
    WHERE
    BookingReference = BJ.BookingReference AND BookingJourneyReference = BJ.BookingJourneyReference AND IsCurrentRevision = 1
    FOR XML PATH('')
) as ActualDropOffDateTimeUTC,


(
    SELECT
    STUFF(
            (
                SELECT ' ' + ActualDropOffDateTimeUTC
                FROM [dbo].[BookingJourneyLinkedCitySprintJobs]
                WHERE
                BookingReference = BJ.BookingReference AND BookingJourneyReference = BJ.BookingJourneyReference AND IsCurrentRevision = 1
                FOR XML PATH(''),TYPE
                ).value('.','NVARCHAR(MAX)'
                ),1,1,''
                )
) AS SecondAttempt

ActualDropOffDateTimeUTC结果:
<ActualDropOffDateTimeUTC>2016-11-29T20:56:00</ActualDropOffDateTimeUTC><ActualDropOffDateTimeUTC>2016-11-30T09:27:00</ActualDropOffDateTimeUTC>

SecondAttempt结果:
016-11-29T20:56:002016-11-30T09:27:00

期望输出:

2016-11-29T20:56:00 - 2016-11-30T09:27:00

1 个答案:

答案 0 :(得分:1)

我想我明白你要做的是什么:

declare @t table(d nvarchar(100));
insert into @t values('2016-11-29T20:56:00'),('2016-11-30T09:27:00');

select stuff((
                select ' - ' + d
                from @t
                for xml path('')
                )
            ,1,3,'')

来源数据:
第1行:2016-11-29T20:56:00
第2行:2016-11-30T09:27:00

查询输出:
2016-11-29T20:56:00 - 2016-11-30T09:27:00