Champ calculé pour définir période (ou SQL???)

Résolu
ButteDuLac Messages postés 534 Statut Membre -  
ButteDuLac Messages postés 534 Statut Membre -
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

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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.
    0
  2. ButteDuLac Messages postés 534 Statut Membre 41
     
    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)!
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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 ;
      0
      1. ButteDuLac Messages postés 534 Statut Membre 41 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        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!)
        0