1
votes

Union des colonnes de tableaux

J'ai le tableau A:

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

Et j'ai le tableau B:

Id
_________
110
111
112

Les meilleures pratiques pour obtenir un tableau de résultats avec des colonnes de tableau A et tableau B:

Id
________
-1
-2
-3


3 commentaires

Pourquoi souhaitez-vous associer des données non liées?


Ajoutez les valeurs 109 et 113 au tableau B et ajustez le résultat attendu en conséquence.


À première vue, cette tâche n'a pas beaucoup de sens. Comme l'a dit jarlh, les données des tableaux semblent totalement indépendantes. Qu'est-ce qui vous fait combiner l'ID -1 avec l'ID 110? Quelle règle s'applique ici?


3 Réponses :


1
votes

utilisez row_number () de l'ensemble de données, j'ai supposé que les deux colonnes des tables avaient le même nombre d'éléments

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


0 commentaires

3
votes

Une solution consisterait à utiliser quelques CTE et ROW_NUMBER . J'ai supposé que les valeurs doivent être jointes respectivement par ordre décroissant et croissant. Cela signifie que si vous deviez ajouter les valeurs -4 et 109 respectivement, alors -1 et 109 seraient joints , plutôt que -1 et 110 (et -4 avec 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;


0 commentaires

2
votes

C'est une bonne solution de travail.

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 


0 commentaires