Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1572 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  sql access probleme de requete

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

sql access probleme de requete

n°1712208
bogmarley
Posté le 03-04-2008 à 15:30:31  profilanswer
 

voila j'ai une BD dans la quel je doit extraire tout les demandes de travail qui on un temps de traitement inferieur a 10 jours, compris entre 10 et 20 jours, 21 et 30 jours et supérieur a 30 sachant que dans les demandes de travail elles ont un niveau d'urgence a,c,p et r  
Donc dans le but de réduire les requêtes e d'éviter  dans créer 16 par mois de l'année j'ai fais ceci
 
SELECT FORMAT([DATE CLOTURE FT],"MM/AAAA" ) AS [ANNEE MOIS], COUNT(BASE.[TYPE D'IMPRIME]) AS [COMPTEDETYPE D'IMPRIME]
FROM BASE  
WHERE ((([DATE CLOTURE FT]-[DATE ARRIVEE])<10))
GROUP BY FORMAT([DATE CLOTURE FT],"MM/AAAA" ),BASE.[TYPE D'IMPRIME]
HAVING(((BASE.[TYPE D'IMPRIME]) LIKE "C" ));
 
 
Dans ma table je dispose en colonne de:
      -type d'imprime (a,p,c,r)
      -date arrivée  
      -date clôture
 
Donc avec ma requête j'obtiens bien toutes les demandes <10 jour pour c
Mais je n'arrive pas à afficher en même temps pour les autre demande r,p,a et pour les autres temps de traitement 10 et 20 jours, 21 et 30 jours et supérieur a 30  
 
Est il possible de créer une requête pour tout sa? (sachant que je ne suis pas très bon en macro)

mood
Publicité
Posté le 03-04-2008 à 15:30:31  profilanswer
 

n°1712272
babasss
Posté le 03-04-2008 à 16:01:13  profilanswer
 

Déjà tu peux éclater ton délai avec :

Code :
  1. SELECT blabla, CASE
  2. WHEN ([DATE CLOTURE FT]-[DATE ARRIVEE])<10 THEN "D < 10"
  3. WHEN ([DATE CLOTURE FT]-[DATE ARRIVEE])<20 THEN "11 < D < 20"
  4. WHEN ([DATE CLOTURE FT]-[DATE ARRIVEE])<30 THEN "21 < D < 30"
  5. ELSE " D >= 30"
  6. END AS délai
  7. FROM ....
 

et puis modifies ton HAVING en :

Code :
  1. HAVING(((BASE.[TYPE D'IMPRIME]) IN ("A", "P", "C", "R" ) ));
 

et normalement tu auras qqch de correct


Message édité par babasss le 03-04-2008 à 16:03:33

---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1712335
bogmarley
Posté le 03-04-2008 à 17:53:37  profilanswer
 

SELECT Format([Date cloture FT],"yyyymm" ) AS [Année mois], Count(base.[type d'imprimé]) AS [CompteDetype d'imprimé], case
WHEN  ([date cloture FT]-[date arrivée]) <10 THEN "D < 10"
WHEN  ([date cloture FT]-[date arrivée]) <10 THEN "D < 10"
WHEN  ([date cloture FT]-[date arrivée]) <20 THEN "11 < D < 20"
WHEN  ([date cloture FT]-[date arrivée]) <30 THEN "21 < D < 30"
ELSE " D >= 30 "
end as délai
FROM base
GROUP BY Format([Date cloture FT],"yyyymm" ), base.[type d'imprimé]
HAVING (((base.[type d'imprimé]) in ("BNI-A","BNI-R",BNI-P","BNI-C" )));
 
 
j'ai donc fais la requête comme au dessu  
et j'obtien le message d'erreur suivant  
 
 
 erreur de syntaxe (operateur absent) dans l'expression 'case
 WHEN  ([date cloture FT]-[date arrivée]) <10 THEN "D < 10"
 WHEN  ([date cloture FT]-[date arrivée]) <10 THEN "D < 10"
 WHEN  ([date cloture FT]-[date arrivée]) <20 THEN "11 < D < 20"
 WHEN  ([date cloture FT]-[date arrivée]) <30 THEN "21 < D < 30"

n°1712360
babasss
Posté le 03-04-2008 à 18:21:41  profilanswer
 

Effectivement... Il semblerait que M$ dans son grand soucis de compatibilité  :D  n'est pas implémenté le CASE WHEN dans Access. Cependant avec un switch on peut visiblement faire la même chose (valable uniquement sur Accesss)

Code :
  1. Switch(
  2. ([date cloture FT]-[date arrivée]) <10, "D < 10",
  3. ([date cloture FT]-[date arrivée]) <20, "11 < D < 20",
  4. ([date cloture FT]-[date arrivée]) <30, "21 < D < 30",
  5. ([date cloture FT]-[date arrivée]) >=30, "D >= 30"
  6. )
 

Plus d'info sur le switch : http://www.webcheatsheet.com/SQL/a [...] switch.php

Message cité 1 fois
Message édité par babasss le 03-04-2008 à 18:22:15

---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1814795
gat_
Posté le 21-11-2008 à 09:09:31  profilanswer
 

Merci pour l'astuce.
 
J'ai l'habitude de travailler sous SQL Server et l'erreur Access ne me parlait pas vraiment.
 
Gaetan
 
http://www.matelli.fr
 

babasss a écrit :

Effectivement... Il semblerait que M$ dans son grand soucis de compatibilité  :D  n'est pas implémenté le CASE WHEN dans Access. Cependant avec un switch on peut visiblement faire la même chose (valable uniquement sur Accesss)

Code :
  1. Switch(
  2. ([date cloture FT]-[date arrivée]) <10, "D < 10",
  3. ([date cloture FT]-[date arrivée]) <20, "11 < D < 20",
  4. ([date cloture FT]-[date arrivée]) <30, "21 < D < 30",
  5. ([date cloture FT]-[date arrivée]) >=30, "D >= 30"
  6. )


 
Plus d'info sur le switch : http://www.webcheatsheet.com/SQL/a [...] switch.php



Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  sql access probleme de requete

 

Sujets relatifs
Problème de requête d'insertion IIS/Access/ASP[Access] Petit problème de requete
[SQL/Access] problème pour une requête en apparence assez simple[Access]Problème de requete dans un formulaire
Asp, Vb et Access, Problème requête! A l'aide[ACCESS] probleme cumul sur requete
[VBA] Access, probleme de requete[MySQL] Probleme de requete migrée depuis Access
Probleme de requete sous access svp aide[Access] [Résolu ]Probleme Requete sql DELETE
Plus de sujets relatifs à : sql access probleme de requete


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR