将每一行与另一行连接起来以在新列中形成一堆行
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
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