Bonsoir,
je sèche sur une requête.
Soit une table :
CREATE TABLE [FDG_MODIFICATION] (
[ID_MODIF_FDG] [int] IDENTITY (1, 1) NOT NULL ,
[ID_COTISATION] [int] NOT NULL ,
[DT_MODIF_FDG] [DATE] NOT NULL ,
[MT_ORIGINE_COT_A] [MONTANT] NULL ,
[C_MODIF_FDG] [int] NOT NULL ,
...
Je recherche à obtenir pour chaque ID_COTISATION, l' ID_MODIF_FDG
ayant la plus petite DT_MODIF_FDG par ID_COTISATION.
Sachant qu'il peut y avoir plusieurs dates identiques par
ID_COTISATION et dans ce cas on doit prendre en priorité la ligne
ayant C_MODIF_FDG = 5 si elle existe.
Cerise sur le gateau s'il y a deux fois C_MODIF_FDG = 5 on ne
sélectionne aucune ligne pour cet ID_COTISATION.
La vitesse d'exécution n'est pas une priorité.
Merci d'avance pour votre aide.
Bonsoir,
je sèche sur une requête.
Soit une table :
CREATE TABLE [FDG_MODIFICATION] (
[ID_MODIF_FDG] [int] IDENTITY (1, 1) NOT NULL ,
[ID_COTISATION] [int] NOT NULL ,
[DT_MODIF_FDG] [DATE] NOT NULL ,
[MT_ORIGINE_COT_A] [MONTANT] NULL ,
[C_MODIF_FDG] [int] NOT NULL ,
...
Je recherche à obtenir pour chaque ID_COTISATION, l' ID_MODIF_FDG
ayant la plus petite DT_MODIF_FDG par ID_COTISATION.
Sachant qu'il peut y avoir plusieurs dates identiques par
ID_COTISATION et dans ce cas on doit prendre en priorité la ligne
ayant C_MODIF_FDG = 5 si elle existe.
Cerise sur le gateau s'il y a deux fois C_MODIF_FDG = 5 on ne
sélectionne aucune ligne pour cet ID_COTISATION.
La vitesse d'exécution n'est pas une priorité.
Merci d'avance pour votre aide.
Bonsoir,
je sèche sur une requête.
Soit une table :
CREATE TABLE [FDG_MODIFICATION] (
[ID_MODIF_FDG] [int] IDENTITY (1, 1) NOT NULL ,
[ID_COTISATION] [int] NOT NULL ,
[DT_MODIF_FDG] [DATE] NOT NULL ,
[MT_ORIGINE_COT_A] [MONTANT] NULL ,
[C_MODIF_FDG] [int] NOT NULL ,
...
Je recherche à obtenir pour chaque ID_COTISATION, l' ID_MODIF_FDG
ayant la plus petite DT_MODIF_FDG par ID_COTISATION.
Sachant qu'il peut y avoir plusieurs dates identiques par
ID_COTISATION et dans ce cas on doit prendre en priorité la ligne
ayant C_MODIF_FDG = 5 si elle existe.
Cerise sur le gateau s'il y a deux fois C_MODIF_FDG = 5 on ne
sélectionne aucune ligne pour cet ID_COTISATION.
La vitesse d'exécution n'est pas une priorité.
Merci d'avance pour votre aide.
Ted,
La dernière condition dépend si
la cerise - deux 5 pour l'ID_COTISATION à la même date minimum,
ou deux 5 n'importe quand?
select
ID_COTISATION,
ID_MODIF_FDG
from (
select
ID_COTISATION,
ID_MODIF_FDG
from FDG_MODIFICATION as M1
where ID_MODIF_FDG = (
select top 1 ID_MODIF_FDG
from FDG_MODIFICATION as M2
where M2.ID_COTISATION = M1.ID_COTISATION
order by
DT_MODIF_FDG, -- la date la plus petite
CASE WHEN C_MODIF_FDG = 5 THEN 0 ELSE 1 END, -- priorité des 5
ID_MODIF_FDG -- au cas de deux 5, choisir l'ID_MODIF_FDG la plus
petite
) as T1
where not exists ( -- encore un "5" pour cet ID_COTISATION, au cas que
C_MODIF_FDG = 5
select * from FDG_MODIFICATION as T2
where T2.ID_COTISATION = T1.ID_COTISATION
and T2.C_MODIF_FDG = 5
and T1.C_MODIF_FDG = 5
and T2.ID_COTISATION > T1.ID_COTISATION
-- and T2.DT_MODIF_FDG = T1.DT_MODIF_FDG
-- aucune ligne si les deux 5 n'ont pas la même date?
)
Ted,
La dernière condition dépend si
la cerise - deux 5 pour l'ID_COTISATION à la même date minimum,
ou deux 5 n'importe quand?
select
ID_COTISATION,
ID_MODIF_FDG
from (
select
ID_COTISATION,
ID_MODIF_FDG
from FDG_MODIFICATION as M1
where ID_MODIF_FDG = (
select top 1 ID_MODIF_FDG
from FDG_MODIFICATION as M2
where M2.ID_COTISATION = M1.ID_COTISATION
order by
DT_MODIF_FDG, -- la date la plus petite
CASE WHEN C_MODIF_FDG = 5 THEN 0 ELSE 1 END, -- priorité des 5
ID_MODIF_FDG -- au cas de deux 5, choisir l'ID_MODIF_FDG la plus
petite
) as T1
where not exists ( -- encore un "5" pour cet ID_COTISATION, au cas que
C_MODIF_FDG = 5
select * from FDG_MODIFICATION as T2
where T2.ID_COTISATION = T1.ID_COTISATION
and T2.C_MODIF_FDG = 5
and T1.C_MODIF_FDG = 5
and T2.ID_COTISATION > T1.ID_COTISATION
-- and T2.DT_MODIF_FDG = T1.DT_MODIF_FDG
-- aucune ligne si les deux 5 n'ont pas la même date?
)
Ted,
La dernière condition dépend si
la cerise - deux 5 pour l'ID_COTISATION à la même date minimum,
ou deux 5 n'importe quand?
select
ID_COTISATION,
ID_MODIF_FDG
from (
select
ID_COTISATION,
ID_MODIF_FDG
from FDG_MODIFICATION as M1
where ID_MODIF_FDG = (
select top 1 ID_MODIF_FDG
from FDG_MODIFICATION as M2
where M2.ID_COTISATION = M1.ID_COTISATION
order by
DT_MODIF_FDG, -- la date la plus petite
CASE WHEN C_MODIF_FDG = 5 THEN 0 ELSE 1 END, -- priorité des 5
ID_MODIF_FDG -- au cas de deux 5, choisir l'ID_MODIF_FDG la plus
petite
) as T1
where not exists ( -- encore un "5" pour cet ID_COTISATION, au cas que
C_MODIF_FDG = 5
select * from FDG_MODIFICATION as T2
where T2.ID_COTISATION = T1.ID_COTISATION
and T2.C_MODIF_FDG = 5
and T1.C_MODIF_FDG = 5
and T2.ID_COTISATION > T1.ID_COTISATION
-- and T2.DT_MODIF_FDG = T1.DT_MODIF_FDG
-- aucune ligne si les deux 5 n'ont pas la même date?
)
Bonsoir,
je sèche sur une requête.
Soit une table :
CREATE TABLE [FDG_MODIFICATION] (
[ID_MODIF_FDG] [int] IDENTITY (1, 1) NOT NULL ,
[ID_COTISATION] [int] NOT NULL ,
[DT_MODIF_FDG] [DATE] NOT NULL ,
[MT_ORIGINE_COT_A] [MONTANT] NULL ,
[C_MODIF_FDG] [int] NOT NULL ,
...
Je recherche à obtenir pour chaque ID_COTISATION, l' ID_MODIF_FDG ayant
la plus petite DT_MODIF_FDG par ID_COTISATION.
Sachant qu'il peut y avoir plusieurs dates identiques par ID_COTISATION
et dans ce cas on doit prendre en priorité la ligne ayant C_MODIF_FDG =
5 si elle existe.
Cerise sur le gateau s'il y a deux fois C_MODIF_FDG = 5 on ne
sélectionne aucune ligne pour cet ID_COTISATION.
La vitesse d'exécution n'est pas une priorité.
Merci d'avance pour votre aide.
Bonsoir,
je sèche sur une requête.
Soit une table :
CREATE TABLE [FDG_MODIFICATION] (
[ID_MODIF_FDG] [int] IDENTITY (1, 1) NOT NULL ,
[ID_COTISATION] [int] NOT NULL ,
[DT_MODIF_FDG] [DATE] NOT NULL ,
[MT_ORIGINE_COT_A] [MONTANT] NULL ,
[C_MODIF_FDG] [int] NOT NULL ,
...
Je recherche à obtenir pour chaque ID_COTISATION, l' ID_MODIF_FDG ayant
la plus petite DT_MODIF_FDG par ID_COTISATION.
Sachant qu'il peut y avoir plusieurs dates identiques par ID_COTISATION
et dans ce cas on doit prendre en priorité la ligne ayant C_MODIF_FDG =
5 si elle existe.
Cerise sur le gateau s'il y a deux fois C_MODIF_FDG = 5 on ne
sélectionne aucune ligne pour cet ID_COTISATION.
La vitesse d'exécution n'est pas une priorité.
Merci d'avance pour votre aide.
Bonsoir,
je sèche sur une requête.
Soit une table :
CREATE TABLE [FDG_MODIFICATION] (
[ID_MODIF_FDG] [int] IDENTITY (1, 1) NOT NULL ,
[ID_COTISATION] [int] NOT NULL ,
[DT_MODIF_FDG] [DATE] NOT NULL ,
[MT_ORIGINE_COT_A] [MONTANT] NULL ,
[C_MODIF_FDG] [int] NOT NULL ,
...
Je recherche à obtenir pour chaque ID_COTISATION, l' ID_MODIF_FDG ayant
la plus petite DT_MODIF_FDG par ID_COTISATION.
Sachant qu'il peut y avoir plusieurs dates identiques par ID_COTISATION
et dans ce cas on doit prendre en priorité la ligne ayant C_MODIF_FDG =
5 si elle existe.
Cerise sur le gateau s'il y a deux fois C_MODIF_FDG = 5 on ne
sélectionne aucune ligne pour cet ID_COTISATION.
La vitesse d'exécution n'est pas une priorité.
Merci d'avance pour votre aide.
Bonsoir,
je sèche sur une requête.
Soit une table :
CREATE TABLE [FDG_MODIFICATION] (
[ID_MODIF_FDG] [int] IDENTITY (1, 1) NOT NULL ,
[ID_COTISATION] [int] NOT NULL ,
[DT_MODIF_FDG] [DATE] NOT NULL ,
[MT_ORIGINE_COT_A] [MONTANT] NULL ,
[C_MODIF_FDG] [int] NOT NULL ,
...
Je recherche à obtenir pour chaque ID_COTISATION, l' ID_MODIF_FDG ayant
la plus petite DT_MODIF_FDG par ID_COTISATION.
Sachant qu'il peut y avoir plusieurs dates identiques par ID_COTISATION
et dans ce cas on doit prendre en priorité la ligne ayant C_MODIF_FDG =
5 si elle existe.
Cerise sur le gateau s'il y a deux fois C_MODIF_FDG = 5 on ne
sélectionne aucune ligne pour cet ID_COTISATION.
La vitesse d'exécution n'est pas une priorité.
Merci d'avance pour votre aide.
Bonsoir,
je sèche sur une requête.
Soit une table :
CREATE TABLE [FDG_MODIFICATION] (
[ID_MODIF_FDG] [int] IDENTITY (1, 1) NOT NULL ,
[ID_COTISATION] [int] NOT NULL ,
[DT_MODIF_FDG] [DATE] NOT NULL ,
[MT_ORIGINE_COT_A] [MONTANT] NULL ,
[C_MODIF_FDG] [int] NOT NULL ,
...
Je recherche à obtenir pour chaque ID_COTISATION, l' ID_MODIF_FDG ayant
la plus petite DT_MODIF_FDG par ID_COTISATION.
Sachant qu'il peut y avoir plusieurs dates identiques par ID_COTISATION
et dans ce cas on doit prendre en priorité la ligne ayant C_MODIF_FDG =
5 si elle existe.
Cerise sur le gateau s'il y a deux fois C_MODIF_FDG = 5 on ne
sélectionne aucune ligne pour cet ID_COTISATION.
La vitesse d'exécution n'est pas une priorité.
Merci d'avance pour votre aide.
Bonsoir,
je sèche sur une requête.
Soit une table :
CREATE TABLE [FDG_MODIFICATION] (
[ID_MODIF_FDG] [int] IDENTITY (1, 1) NOT NULL ,
[ID_COTISATION] [int] NOT NULL ,
[DT_MODIF_FDG] [DATE] NOT NULL ,
[MT_ORIGINE_COT_A] [MONTANT] NULL ,
[C_MODIF_FDG] [int] NOT NULL ,
...
Je recherche à obtenir pour chaque ID_COTISATION, l' ID_MODIF_FDG ayant
la plus petite DT_MODIF_FDG par ID_COTISATION.
Sachant qu'il peut y avoir plusieurs dates identiques par ID_COTISATION
et dans ce cas on doit prendre en priorité la ligne ayant C_MODIF_FDG =
5 si elle existe.
Cerise sur le gateau s'il y a deux fois C_MODIF_FDG = 5 on ne
sélectionne aucune ligne pour cet ID_COTISATION.
La vitesse d'exécution n'est pas une priorité.
Merci d'avance pour votre aide.
SELECT *
FROM FDG_MODIFICATION M1
WHERE DT_MODIF_FDG = (SELECT MIN(DT_MODIF_FDG)
FROM FDG_MODIFICATION M2
WHERE M2.ID_COTISATION = M1.ID_COTISATION)
AND C_MODIF_FDG = COALESCE((SELECT DISTINCT C_MODIF_FDG
FROM FDG_MODIFICATION M3
WHERE M3.ID_COTISATION = M1.ID_COTISATION
AND C_MODIF_FDG = 5) , C_MODIF_FDG)
-- unicité de la valeur 5 dans C_MODIF_FDG
AND NOT EXISTS (SELECT *
FROM FDG_MODIFICATION M4
WHERE M4.ID_COTISATION = M1.ID_COTISATION
AND M4.C_MODIF_FDG = M1.C_MODIF_FDG
AND C_MODIF_FDG = 5
AND M4.ID_MODIF_FDG <> M1.ID_MODIF_FDG)
SELECT *
FROM FDG_MODIFICATION M1
WHERE DT_MODIF_FDG = (SELECT MIN(DT_MODIF_FDG)
FROM FDG_MODIFICATION M2
WHERE M2.ID_COTISATION = M1.ID_COTISATION)
AND C_MODIF_FDG = COALESCE((SELECT DISTINCT C_MODIF_FDG
FROM FDG_MODIFICATION M3
WHERE M3.ID_COTISATION = M1.ID_COTISATION
AND C_MODIF_FDG = 5) , C_MODIF_FDG)
-- unicité de la valeur 5 dans C_MODIF_FDG
AND NOT EXISTS (SELECT *
FROM FDG_MODIFICATION M4
WHERE M4.ID_COTISATION = M1.ID_COTISATION
AND M4.C_MODIF_FDG = M1.C_MODIF_FDG
AND C_MODIF_FDG = 5
AND M4.ID_MODIF_FDG <> M1.ID_MODIF_FDG)
SELECT *
FROM FDG_MODIFICATION M1
WHERE DT_MODIF_FDG = (SELECT MIN(DT_MODIF_FDG)
FROM FDG_MODIFICATION M2
WHERE M2.ID_COTISATION = M1.ID_COTISATION)
AND C_MODIF_FDG = COALESCE((SELECT DISTINCT C_MODIF_FDG
FROM FDG_MODIFICATION M3
WHERE M3.ID_COTISATION = M1.ID_COTISATION
AND C_MODIF_FDG = 5) , C_MODIF_FDG)
-- unicité de la valeur 5 dans C_MODIF_FDG
AND NOT EXISTS (SELECT *
FROM FDG_MODIFICATION M4
WHERE M4.ID_COTISATION = M1.ID_COTISATION
AND M4.C_MODIF_FDG = M1.C_MODIF_FDG
AND C_MODIF_FDG = 5
AND M4.ID_MODIF_FDG <> M1.ID_MODIF_FDG)