Comment faire une jointure interne sur le numéro de ligne de sql server
SQL Server 2008
Deux tables:
Tableau a données suivantes:
RowA
RowB
RowC
RowD
Tableau B a données suivantes:
Row4
Row3
Row2
Row1
Je veux obtenir la sortie suivante:
RowA Row1
RowB Row2
RowC Row3
RowD Row4
La seule valeur commune entre les deux tables est le numéro de ligne
Je peux obtenir les données individuellement des cours:
SELECT val
FROM A
ORDER BY val
SELECT val
FROM B
ORDER BY val
Mais comment puis-je me joindre sur le numéro de ligne?
Et si je n'ai pas une commande, mais je veux juste les lignes dans l'ordre où ils sortent?
RowA Row4
RowB Row3
RowC Row2
RowD Row1
comme dans la jointure de
SELECT val
FROM A
SELECT val
FROM B
Rappelez-vous: tant que vous n'avez pas spécifier explicitement un
Je me rends compte que, mais dans mon cas, les deux tables sont à partir de fonctions et sera toujours dans le même ordre
ORDER BY
, l'ordre dans lequel les lignes sont retournées sur la table(s) est garantie. Il pourrait être différent demain ... donc relier les deux lignes de deux tables différentes en fonction de uniquement sur leur "ordinal" position plus ou moins aléatoire de la séquence de sortie n'est pas reproductible et ne sont pas fiables. Si vos deux tables n'ont rien en commun - en fait, vous ne pouvez pas vraiment "se connecter" deux jeux de données à partir d'un tableau...Je me rends compte que, mais dans mon cas, les deux tables sont à partir de fonctions et sera toujours dans le même ordre
OriginalL'auteur Graham | 2012-10-19
Vous devez vous connecter pour publier un commentaire.
essayez ceci:
UTILISATION ROW_NUMBER() fonction dans sql server 2008
SQL violon démo
vous pouvez donner l'ordre par (sélectionnez 0), parce que la clause order by est obligatoire.. voir ici sqlfiddle.com/#!3/9e5bf/5
OriginalL'auteur Joe G Joseph
OriginalL'auteur user10508443