📄 Requête SQL – Trouver les paiements avant une date, avec dépôt de chèque après

 

📄 Requête SQL – Trouver les paiements avant une date, avec dépôt de chèque après



🎯 Objectif

Cette requête permet d’extraire les paiements enregistrés avant le 02/07/2025, mais dont le chèque lié a été déposé après cette même date.

Ce type de requête peut être utile, par exemple :

  • Pour identifier des retards entre la saisie du paiement et le dépôt du chèque.

  • Pour faire un rapprochement comptable entre la facturation et les mouvements bancaires.


🔍 Requête complète

sql

SELECT Paiements.Matricule, Paiements.NumReçu, Paiements.DatePaiement, Paiements.Montant, Paiements.ModeReglement, Paiements.Annulation, Paiements.MotifAnnulation, Paiements.NRecu, Paiements.NameUser, Paiements.MontantPayeAvant, PaiementsCheque.NumReçu AS TBLinfocheque, PaiementsCheque.DateDepot FROM Paiements FULL OUTER JOIN PaiementsCheque ON Paiements.NumReçu = PaiementsCheque.NumReçu WHERE Paiements.DatePaiement < CONVERT(DATETIME, '2025-07-02 00:00:00', 102) AND PaiementsCheque.DateDepot > CONVERT(DATETIME, '2025-07-02 00:00:00', 102);

🧩 Explication des composants

🗂 FROM Paiements FULL OUTER JOIN PaiementsCheque

  • On récupère tous les paiements et tous les chèques, même si certains n’ont pas de correspondance.

  • Le lien se fait par le NumReçu (le numéro de reçu est censé identifier un paiement ou un chèque).

🔍 Clause WHERE

On filtre ensuite les résultats :

  • Paiements.DatePaiement < '2025-07-02' → Paiements enregistrés avant le 2 juillet 2025.

  • PaiementsCheque.DateDepot > '2025-07-02' → Chèques déposés après cette date.

⚠️ Cela permet de repérer des paiements anciens, dont le chèque a été déposé bien plus tard.


🧠 Remarque importante

Le FULL OUTER JOIN permet de voir toutes les lignes, même :

  • si un paiement n’a pas de chèque,

  • ou si un chèque est saisi sans ligne de paiement correspondante.

Mais dans le cas de cette requête, la condition sur PaiementsCheque.DateDepot exclura de toute façon les lignes sans chèque (NULL > date → retourne FALSE).

Si tu veux être plus souple, tu peux utiliser un LEFT JOIN si tu t'intéresses uniquement aux paiements.


✅ Variante avec LEFT JOIN (plus courant dans ce contexte)

sql

FROM Paiements LEFT JOIN PaiementsCheque ON Paiements.NumReçu = PaiementsCheque.NumReçu

Cela donne exactement les mêmes résultats tant que tu ne veux que les paiements avec ou sans chèque.

Commentaires

Posts les plus consultés de ce blog

RECHERCHEX avec plusieurs conditions (ET / OU) – Guide complet et exemples

🛠 Utilisation de CustomUIEditor pour Personnaliser le Ruban Excel

Tableau croisé dynamique Afficher Matricule “à côté” du Nom & Prénom (en colonne), et non en dessous