2017-03-20 2 views
0

J'ai remarqué des variations de cette question a été posée mais aucun ne semble fonctionner pour moi (ou je ne regardais pas droit). Je suis encore en train d'apprendre le SQL, alors s'il vous plaît, supportez-moi.SQL Left Outer Join mais seulement tirer la date max

J'ai deux tables que je cherche à rejoindre. Je veux tous les enregistrements de la Table C et seulement ceux qui correspondent à la Table P. Donc je suppose une jointure externe gauche?

Je veux toutes les colonnes des deux tables et ils seront rejoints par « d 'art » dans le tableau C et « No.Art » dans le tableau P.

La partie la plus délicate pour moi est que, avec cette jointure, je suis à la recherche pour tirer uniquement le dernier "ItemNo" basé sur la date (PDate) dans le tableau P.

Merci d'avance!

+0

Une jointure gauche est ce que vous voulez, mais vous aurez besoin de joindre la table C avec une sous-requête sur la table P avec un groupe par la clause d 'art pour obtenir la table vous devez vous joindre à. Vous devrez fournir plus de détails (type de base de données), etc ... si vous voulez une solution plus précise. – ozborn

+0

Ce sont deux tables dans un SQL Server. J'essaie de faire la jointure sur Tableau Desktop en utilisant la fonction SQL personnalisée – Rosadocc

+0

Je n'ai pas accès au serveur SQL ici, mais une jointure gauche avec la partition par est probablement la solution si vous ne voulez pas de valeurs agrégées à partir de Table P. – ozborn

Répondre

1

Cela peut être fait avec un extérieur appliquent

select * 
    from TableC c 
    outer apply (
     select top 1 * 
      from TableP 
       where itemno = c.partno 
       order by pdate desc 
    ) p 
+0

Merci! J'ai bien travaillé pour moi. – Rosadocc

+0

@Rosadocc Pas de problème, content que ça a marché. – KindaTechy