基于先前的行值连接字符串

时间:2015-10-15 06:31:11

标签: sql sql-server string-concatenation

考虑以下输入:

ID
--------
33
272
317
318

我需要以某种方式获得以下结果:

Result
--------
/33
/33/272
/33/272/317
/33/272/317/318

如何使用单个SELECT语句实现此目的?

1 个答案:

答案 0 :(得分:3)

使用CROSS APPLYFOR XML PATH()

;WITH Cte AS(
    SELECT *,
        RN = ROW_NUMBER() OVER(ORDER BY (SELECT NULL))
    FROM tbl
)
SELECT *
FROM Cte c
CROSS APPLY(
    SELECT '/' + CONVERT(VARCHAR(10), ID)
    FROM Cte
    WHERE rn <= c.rn
    FOR XML PATH('')
)x(s)