Comparer 2 dates d'echeances Transact SQL
Résolu
goodspirit
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
goodspirit Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
goodspirit Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Normalement, je travaille sur SQL Server, j'ai plusieurs tables d'echeances qui sont déjà créer et remplies.
je prends comme exemple une table EcheanceInteret qui a pour champs : IdEcheance, Date Début echenace, Date Fin echeance.....
exemple :
Id Date Début echeance Date Fin echeance
100 1989-03-31 00:00:00 1990-03-31 00:00:00
101 1990-03-31 00:00:00 1991-03-31 00:00:00
102 1991-03-31 00:00:00 1992-03-31 00:00:00
On m'a demandé de faire une requête qui vérifie que toutes les dates d'échéances doivent se suivre : Date de début échéance = date de fin de l'échéance précédente.
exemple: date début de l'echeance 101 = date fin d'echeance 100.
Alors dans ma requête je dois comparer la Date de début échéance avec la date de fin de l'échéance précédente. si ils sont égales c'est ce que je cherche, sinon je dois récupérer ces dates pour les corriger.
Est ce que quelqu'un peut m'aider SVP
Merci d'avance
Normalement, je travaille sur SQL Server, j'ai plusieurs tables d'echeances qui sont déjà créer et remplies.
je prends comme exemple une table EcheanceInteret qui a pour champs : IdEcheance, Date Début echenace, Date Fin echeance.....
exemple :
Id Date Début echeance Date Fin echeance
100 1989-03-31 00:00:00 1990-03-31 00:00:00
101 1990-03-31 00:00:00 1991-03-31 00:00:00
102 1991-03-31 00:00:00 1992-03-31 00:00:00
On m'a demandé de faire une requête qui vérifie que toutes les dates d'échéances doivent se suivre : Date de début échéance = date de fin de l'échéance précédente.
exemple: date début de l'echeance 101 = date fin d'echeance 100.
Alors dans ma requête je dois comparer la Date de début échéance avec la date de fin de l'échéance précédente. si ils sont égales c'est ce que je cherche, sinon je dois récupérer ces dates pour les corriger.
Est ce que quelqu'un peut m'aider SVP
Merci d'avance
A voir également:
- Comparer 2 dates d'echeances Transact SQL
- Supercopier 2 - Télécharger - Gestion de fichiers
- Nombre de jours entre deux dates excel - Guide
- 2 ecran pc - Guide
- Faire 2 colonnes sur word - Guide
- Whatsapp 2 - Guide
3 réponses
Voici le Code que j'ai écrit mais il me donne pas les bons résultats :(
WITH T0 (IdEcheanceInteret , DtDebutPeriode, DtFinPeriode,N)
AS
(
SELECT IdEcheanceInteret +1 'id', DtDebutPeriode, DtFinPeriode
, ROW_NUMBER() OVER(ORDER BY DtDebutPeriode) AS N
FROM EcheanceInteret
)
SELECT *
FROM T0 AS T1
INNER JOIN T0 AS T2
ON T1.N = T2.N
WHERE T1.DtFinPeriode != T2.DtDebutPeriode
Est ce que quelqu'un a une idée comment je peux faire en Transact SQL
WITH T0 (IdEcheanceInteret , DtDebutPeriode, DtFinPeriode,N)
AS
(
SELECT IdEcheanceInteret +1 'id', DtDebutPeriode, DtFinPeriode
, ROW_NUMBER() OVER(ORDER BY DtDebutPeriode) AS N
FROM EcheanceInteret
)
SELECT *
FROM T0 AS T1
INNER JOIN T0 AS T2
ON T1.N = T2.N
WHERE T1.DtFinPeriode != T2.DtDebutPeriode
Est ce que quelqu'un a une idée comment je peux faire en Transact SQL
Bonjour,
Je pense que tu peux t'en sortir avec une requête assez simple, dans ce style :
-- sélectionner une échéance
SELECT * FROM ECHEANCE E_SUIV
-- qui a une échéance précédente
WHERE EXISTS ( SELECT 1 FROM ECHEANCE E_PREC WHERE E_PREC.IDECHEANCE = E_SUIV.IDECHEANCE - 1
-- mais que la date de fin de l'échéance précédente n'est pas celle de
-- début de la suivante
AND E_PREC.DATEFIN <> E_SUIV.DATEDEBUT
)
Avec ce genre de requête, tu devrais récupérer la liste des échéances qui ne suivent pas l'échéance précédente.
Qu'en penses-tu ? Ça correspond à ton besoin ?
Cordialement, M.
Je pense que tu peux t'en sortir avec une requête assez simple, dans ce style :
-- sélectionner une échéance
SELECT * FROM ECHEANCE E_SUIV
-- qui a une échéance précédente
WHERE EXISTS ( SELECT 1 FROM ECHEANCE E_PREC WHERE E_PREC.IDECHEANCE = E_SUIV.IDECHEANCE - 1
-- mais que la date de fin de l'échéance précédente n'est pas celle de
-- début de la suivante
AND E_PREC.DATEFIN <> E_SUIV.DATEDEBUT
)
Avec ce genre de requête, tu devrais récupérer la liste des échéances qui ne suivent pas l'échéance précédente.
Qu'en penses-tu ? Ça correspond à ton besoin ?
Cordialement, M.
voici un exp :
dans ma table j'ai ça :
IdEcheance Date Debut Date Fin
100 2003-11-30 00:00:00.000 2004-12-01 00:00:00.000
101 2004-12-01 00:00:00.000 2005-12-01 00:00:00.000
102 2005-12-01 00:00:00.000 2006-12-01 00:00:00.000
103 2006-12-01 00:00:00.000 2007-12-01 00:00:00.000
104 2007-12-01 00:00:00.000 2008-12-01 00:00:00.000
et quand j'exécute ta requête il me sort
dEcheance Date Debut Date Fin
100 2003-11-30 00:00:00.000 2004-12-01 00:00:00.000
102 2005-12-01 00:00:00.000 2006-12-01 00:00:00.000
104 2007-12-01 00:00:00.000 2008-12-01 00:00:00.000
je ne sais pas pourquoi pour ça j'ai pas de prob mais je cherche les dates qui sont pas bonnes :(
je ne sais pas comment faire.
dans ma table j'ai ça :
IdEcheance Date Debut Date Fin
100 2003-11-30 00:00:00.000 2004-12-01 00:00:00.000
101 2004-12-01 00:00:00.000 2005-12-01 00:00:00.000
102 2005-12-01 00:00:00.000 2006-12-01 00:00:00.000
103 2006-12-01 00:00:00.000 2007-12-01 00:00:00.000
104 2007-12-01 00:00:00.000 2008-12-01 00:00:00.000
et quand j'exécute ta requête il me sort
dEcheance Date Debut Date Fin
100 2003-11-30 00:00:00.000 2004-12-01 00:00:00.000
102 2005-12-01 00:00:00.000 2006-12-01 00:00:00.000
104 2007-12-01 00:00:00.000 2008-12-01 00:00:00.000
je ne sais pas pourquoi pour ça j'ai pas de prob mais je cherche les dates qui sont pas bonnes :(
je ne sais pas comment faire.
Merci pour tout.
J'ai trouvé la solution :)
J'ai trouvé la solution :)
WITH date_test
AS
(
SELECT idEcheanceAmortissement , IdEmprunt, idAmortissement, DtDebutPeriode, DtFinPeriode
, ROW_NUMBER() OVER(ORDER BY idEmprunt,idAmortissement, DtDebutPeriode, DtFinPeriode) AS N
FROM EcheanceAmortissement
)
SELECT *
FROM date_test AS T1, date_test AS T2
WHERE T1.N + 1= T2.N
and T2.DtDebutPeriode <> T1.DtFinPeriode
and T1.idEmprunt = T2.idEmprunt
and T1.idAmortissement=T2.idAmortissement
order by T1.idEmprunt, T1.idAmortissement, T1.DtDebutPeriode, T1.DtFinPeriode
AS
(
SELECT idEcheanceAmortissement , IdEmprunt, idAmortissement, DtDebutPeriode, DtFinPeriode
, ROW_NUMBER() OVER(ORDER BY idEmprunt,idAmortissement, DtDebutPeriode, DtFinPeriode) AS N
FROM EcheanceAmortissement
)
SELECT *
FROM date_test AS T1, date_test AS T2
WHERE T1.N + 1= T2.N
and T2.DtDebutPeriode <> T1.DtFinPeriode
and T1.idEmprunt = T2.idEmprunt
and T1.idAmortissement=T2.idAmortissement
order by T1.idEmprunt, T1.idAmortissement, T1.DtDebutPeriode, T1.DtFinPeriode