如何连续连续行中的列数据?

Rez*_*eni 1 sql sql-server sql-server-2008

我在SQL Server中有一个表,如下所示:

Table1:

Id    Symbol
1     a
5     c
8     d
3     b
Run Code Online (Sandbox Code Playgroud)

我想排序基于数据Id并连接symbol连续行:

Query Result:

Id    Symbol
1     ab
3     bc
5     cd
8     d
Run Code Online (Sandbox Code Playgroud)

什么是这个结果的最佳查询?

shA*_*A.t 6

在SQL Server 2012 +中:

SELECT
    Id,
    symbol + ISNULL(LEAD(symbol) OVER (ORDER BY Id), '') as symbole
FROM
    t
Run Code Online (Sandbox Code Playgroud)

或旧版本:

;WITH CTE AS (
SELECT
    *, ROW_NUMBER() OVER (ORDER BY Id) AS rn
FROM
    t)
SELECT t1.Id, t1.symbol + ISNULL(t2.symbol, '') As symbole
FROM CTE t1
    LEFT JOIN CTE t2
    ON t1.rn = t2.rn - 1
Run Code Online (Sandbox Code Playgroud)