2010-11-05 5 views
1

Je dois écrire une requête SQL qui extrait d'une table qui stocke des enregistrements à chaque fois qu'un de nos commerciaux parle à un client. Les colonnes pertinentes sont: (1) l'ID de l'employé du vendeur, (2) le numéro de compte du client, et (2) la date de la conversation.Limitation des résultats dans une requête SQL basée sur la distinction dans une colonne arbitraire

Il arrive souvent que les vendeurs parlent plusieurs fois à des clients au cours de la période couverte par le rapport (un mois calendaire), de sorte qu'il y a plusieurs entrées presque identiques à l'exception de la date. Là où je me suis fait trébucher c'est que, dans le cadre de cette requête, je dois retourner un seul enregistrement par combinaison vendeur/client, mais je ne peux pas utiliser DISTINCT parce que j'ai besoin d'inclure la date du conversation la plus récente au cours de la période de référence. Donc, si le vendeur John a parlé au client ABC les 10/10, 10/18 et 10/25, j'ai besoin de tirer le dossier 10/25 mais pas les autres.

Il s'agit d'une base de données Sybase. J'ai le sentiment qu'il me manque quelque chose de simple mais j'ai essayé de chercher et de rester perplexe. Toute aide est grandement appréciée.

Merci pour votre temps,

John

Répondre

1

Deviner les noms de colonnes ...

SELECT employee_id, client_acct_no, 
     MAX(conversation_date) AS MOST_RECENT_CONV_DATE 
    FROM mytable 
    WHERE conversation_date BETWEEN DATE '2010-10-01' AND DATE '2010-10-31' 
GROUP BY employee_id, client_acct_no 

Documentation pour GROUP BY clause.

Questions connexes