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 Réponses :
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
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;
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
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?