将每一行与另一行连接起来以在新列中形成一堆行

concatenate each row with another to form a stack of row in new column

Table 一列,数值如下

Table
------------
Ind
Pak
SL


Output
------------
Ind VS Pak
Ind VS SL
SL VS Pak

输出应该是上面提到的每一行作为单个列中的字符串。

您可以使用 CTE 获得想要的结果:

DECLARE @Data TABLE (Team VARCHAR(100))
INSERT @Data VALUES ('Ind'), ('Pak'), ('SL')

;WITH CTE AS (
    SELECT
        Team,
        ROW_NUMBER() OVER (ORDER BY Team) AS RowNum
    FROM @Data
)
SELECT
    R1.Team + ' VS ' + R2.Team AS [Output]
FROM CTE R1
    INNER JOIN CTE R2
        ON R1.RowNum < R2.RowNum

输出:

Output
---------------
Ind VS Pak
Ind VS SL
Pak VS SL

您不一定需要 CTE,但我宁愿避免出于习惯加入 VARCHAR 值。

SELECT
    R1.Team + ' VS ' + R2.Team AS [Output]
FROM @Data R1
    INNER JOIN @Data R2
        ON R1.Team < R2.Team