Comment puis-je rejoindre la première ligne d'une sous-requête?

J'ai une table de factures et de l'enfant tableau des données connexes liées par une clé. En particulier, pour chaque facture, je suis uniquement intéressé par la première ligne de la table enfant. Étant donné que je veux, celle liée ligne pour chaque facture clés - comment puis-je y arriver?

Select i.[Invoice Number],
       c.[Carrier Name]
From Invoice i
    Left Join Carriers c on i.[InvoiceKey] = c.[InvoiceKey]
Where -- what?

Je suppose que sémantiquement parlant, ce que je suis à la recherche de quelque chose qui s'apparente à la notion de Top 1 c.CarrierName Group by InvoiceKey (ou quel serait le concept de ça, si c'était possible en T-SQL.)

J'ai pensé à faire un left join sur une sous-requête, mais ça ne semble pas très efficace. Quelqu'un a une T-SQL astuces pour y parvenir?

Modifier: Désolé les gars, j'ai oublié de mentionner c'est SQL Server 2000, alors que je vais donner upvotes pour le cours de SQL Server 2005/2008 réponses qui vont travailler, je ne peux pas les accepter, j'ai peur.

  • La deuxième table ont un attribut qui indique la ligne qui est premier, deuxième, etc.
  • Non, autres que la séquence de l'indice
InformationsquelleAutor BenAlabaster | 2011-01-14