首页 > 解决方案 > 表的联合列

问题描述

我有表A:

Id
________
-1
-2
-3

我有表B:

Id
_________
110
111
112

如何获得包含表 A 和表 B 中的列的结果表的最佳实践:

IdA | IdB
__________
-1  | 110
-2  | 111
-3  | 112

标签: sqlsql-server

解决方案


一种方法是使用几个 CTE 和ROW_NUMBER. 我假设这些值应该分别按降序和升序连接。这意味着如果您要分别添加值-4and109-1109将被加入,而不是-1and 110(和-4with 112)。

WITH A AS(
    SELECT Id,
           ROW_NUMBER() OVER (ORDER BY Id DESC) AS I
    FROM TableA),
B AS(
    SELECT ID
           ROW_NUMBER() OVER (ORDER BY ID ASC) AS I
    FROM TableB)
SELECT A.ID AS IdA,
       B.ID AS IdB
FROM A
     JOIN B ON A.I = B.I;

推荐阅读