Champ calculé pour définir période (ou SQL???) [Résolu/Fermé]

Signaler
Messages postés
492
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020
-
Messages postés
492
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020
-
Bonjour,

Dans une BDD sous Access (2010), j'ai une table [T_acc] contenant un champ Date_acc.

J'ai une autre table avec des périodes. Cette table ressemble à :


J'aimerais déterminer la période de l'accouchement en fonction de Date_acc, qui doit être comprise entre DateDeb et DateFin.

Je ne sais plus s'il faut que je crée un champ calculé dans ma table [T_acc] ou bien une requête.

J'ai essayé le champ calculé, sans trouver comment...

J'ai essayé la requête, qui donne :
SELECT Count(T_Acc.N°_acc) AS CompteDeN°_acc, T_Acc.Type_acc, T_periodes.N_periode
FROM T_Acc, T_periodes
GROUP BY T_Acc.Date_acc, T_periodes.N_periode, T_Acc.Type_acc, T_periodes.DateDeb, T_periodes.DateFin, T_periodes.N_periode
HAVING (([Date_acc] Between [T_periodes]![DateDeb] And [T_periodes]![DateFin]));


La requête me renvoie un tableau vide.

J'ai pensé à une requête croisée, mais les seuls regroupements possibles sont par mois, par année, par trimestre, par date ou par date/heure.

Est-ce qu'on peut définir un regroupement différent?

Par exemple, au lieu de :
TRANSFORM Count(T_Acc.[N°_acc]) AS CompteDeN°_acc
SELECT T_Acc.[Type_acc], Count(T_Acc.[N°_acc]) AS [Total de N°_acc]
FROM T_Acc
GROUP BY T_Acc.[Type_acc]
PIVOT Format([Date_acc],"mmm") In ("janv","févr","mars","avr","mai","juin","juil","août","sept","oct","nov","déc");


J'aurais
[...] PIVOT Format([Date_acc],"...") In ("P1","P2","P3","P4","P5","P6","P7","P8","P9","P10","P11","P12");


Quelque chose du genre... ???

Merci!

2 réponses

Messages postés
16454
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 juillet 2021
880
bonsoir, pour commencer, je propose cette requête:
SELECT T_Acc.*, T_periodes.*
FROM T_Acc, T_periodes
WHERE T_Acc.Date_acc >= T_periodes.DateDeb 
      AND T_Acc.Date_acc <= T_periodes.DateFin ;

A compléter ou à corriger, tiens-nous au courant.
Messages postés
492
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020
29
Entre temps, voici ce que j'ai réussi...

SELECT T_Acc.Date_acc, Min(T_periodes.DateFin) AS DateFinPer
FROM T_Acc, T_periodes
WHERE (((T_periodes.DateFin)>[Date_acc]))
GROUP BY T_Acc.Date_acc;


Me renvoie la date de fin de la période au cours duquel s'est déroulé l'accouchement. Je cherche maintenant à afficher le numéro de période (N_periode ou ID_periode) correspondant, ainsi que l'année financière (Ann_financ)!
Messages postés
16454
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 juillet 2021
880
suggestion:
SELECT T_Acc.Date_acc, T_periodes.Ann_financ, T_periodes.N_periode
FROM T_Acc, T_periodes
WHERE T_Acc.Date_acc >= T_periodes.DateDeb 
      AND T_Acc.Date_acc <= T_periodes.DateFin ;
Messages postés
492
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020
29 >
Messages postés
16454
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 juillet 2021

Ah, quand on est un génie, ce que ça peut être simple!
Merci!!!
(J'ai encore des croûtes à manger en SQL, ma foi!)