📄 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

🛠 Utilisation de CustomUIEditor pour Personnaliser le Ruban Excel

🗓️ Simulateur de Congés et Calendrier Collaboratif sous Google Sheets

Explication VBA : Facturation automatique Gestion client