Объединение столбцов таблиц - PullRequest
1 голос
/ 19 марта 2019

У меня есть таблица A:

Id
________
-1
-2
-3

И у меня есть таблица B:

Id
_________
110
111
112

Как лучше всего получить таблицу результатов со столбцами из таблицы A и таблицы B:

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

Ответы [ 3 ]

3 голосов
/ 19 марта 2019

Один из способов - использовать пару CTE и ROW_NUMBERпредположил , что значения должны быть объединены в порядке убывания и возрастания соответственно.Это означает, что если вы добавите значения -4 и 109 соответственно, тогда будут объединены -1 и 109, а не -1 и 110-4 с 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;
2 голосов
/ 19 марта 2019

Это хорошее рабочее решение.

SELECT AA.Id AS IdA ,BB.Id As IdB  FROM 
 (SELECT Id, ROW_NUMBER() OVER(ORDER BY (SELECT 100)) As row_num FROM A ) AS AA
 INNER JOIN 
 (SELECT Id, ROW_NUMBER() OVER(ORDER BY (SELECT 100)) AS row_num  FROM B)  AS BB
 ON AA.row_num = BB.row_num 
1 голос
/ 19 марта 2019

использовать row_number() из набора данных. Предполагается, что столбцы обеих таблиц имеют одинаковое количество элементов

with cte as
(select id,row_number()over(order by (select null)) rn
 from tableA
),cte1 as
( 
select id,row_number()over(order by (select null)) rn from tableB
) select cte.id,cte1.id cte join ct1 on ct1.rn=cte.rn
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...