TSQL - TOP X DE sous-Requête?
Quelqu'un peut-il svp m'éclairer à un moyen de filtrer une sous-requête qui est situé dans une clause from?
Je voudrais qu'elle ressemble à quelque chose comme ceci:
SELECT *
FROM TABLE_A
LEFT JOIN (TOP 8 TABLE_B) ON TABLE_B.id = TABLE_A.id
Vous devriez changer la accepté de répondre à Remus Rusanu. Raja donne la mauvaise réponse en général.
OriginalL'auteur EWizard | 2010-05-07
Vous devez vous connecter pour publier un commentaire.
Veuillez essayer ceci:
Considérations:
Ne pas utiliser * la mesure où elle conduit à des contraintes de performance.
SI vous êtes préoccupé par juste l'ID puis seulement obtenir l'ID de Table_B
HTH
OriginalL'auteur Raja
Si vous avez besoin de mettre en corrélation la sous-requête, alors vous devez utiliser APPLIQUER au lieu de JOINTURE:
Cela vous donnera le top 8 des lignes de B pour chaque ligne en A. Les autres solutions que je vois affiché vous donnera la JOINTURE entre l'Un et l' mondiale TOP 8 de B
OriginalL'auteur Remus Rusanu
Devrait fonctionner.
qui vous fait penser que vous ne pouvez pas utiliser une clause where sur la sous-requête/dérivés de la table?
Oh, je sais que je peux, sans aucun doute. C'est pas juste une ID statique que j'ai besoin. C'est comme ça: TableA est un employé de la table avec EMPID comme la clé. TableB est dépendante de la table, avec à la clé étrangère d'être EMPID. TableB a quelques EMPID qui ont 15 personnes à Charge. Je ne veux que le top 8. Donc, dans votre code ci-dessus, Si je pouvais filtrer 8 personnes à charge basé sur le EMPID forme de la requête principale alors je serais d'or.
OriginalL'auteur Justin Niessner
OriginalL'auteur Joel Coehoorn
Vous pourriez envisager une approche différente tels que:
OriginalL'auteur Keith Adler
vous pouvez utiliser une COMMANDE, et même le HAUT de N utiliser une variable:
De SORTIE:
MODIFIER basé sur OPs commentaires:
De SORTIE:
OriginalL'auteur KM.