Voila la bonne Reponse Merci bcp pour votre effort
SELECT MAtricule, Nom, Min (CONVERT(datetime ,Madate, 108))
FROM Matable
WHERE CONVERT(varchar, Madate, 103) = '02/01/2007'
and (CONVERT(varchar(20), Madate, 108)) > '08:15:00.00'
AND readerdescription = 'Entree'
GROUP BY MAtricule, Nom
pas de having qui porte sur des condition après le groupement.
Le groupement "group by" ne doit porter que sur les colonnes en commun sur les résultats regroupés (+ les fonctions d'aggrégation min, max ...).
si tu met la date ou l'heure dans le groupement, vur que c'est différent pour tout le monde, ça ne regroupe plus rien
d'autre part, on emploi distinct ou group by, mais pas les 2 à la fois.
est ce possible d'executer la requete pour tout un mois, pas seulment pour un seul jour donné
alors pour chaque employé On aura...nombre de retards é aussi Le cumule des retards
essai avec un truc du genre :
select count(popo) from [ta table] where date >#08:15#
la seule chose pour que cela fonctionne bien, il faudrait que tu sépares date et heure dans 2 champs distincts
Salut,
En plus de la remarque de bouf,
dans ce genre " d' exercice" il faut raisonner par étape.
1° -Extraire les lignes dont l' Etat est Entree.
2° -Faire un regroupement par date
3° -Calculer le nbre de minutes de retard de la façon suivante:
Si Entree > 08:15 alors
Entree - 08:15
Sinon
0
Fin si
4° Faire un regroupement sur un employer, somme de retard pour une période donnée.
Si tu arrives à faire ça en une seule expression?
alors t' es un champion !
déplacer vers aspfr.com ou sqlfr.com, mon coeur balance...
(ps : l'idée de 2 champs date / heure peut t'éviter pas mal de manip...)
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
T'aurais peut être du poser ta question sur www.sqlfr.com ...
Cependant voila ma version :
SELECT CONVERT(VARCHAR(10),MADATE,103) [LE], NOM ,
DATEDIFF(MINUTE,CONVERT(VARCHAR(10),MADATE,103)+' 08:15',MADATE) [NOMBRE DE MINUTE DE RETARD]
FROM CODESOURCE
WHERE UPPER(ETAT) = 'ENTREE'
--> ICI TU CHOISIE UNE DATE PRÉCICE
AND CONVERT(VARCHAR(10),MADATE,103)='01/01/2001'
--> OU BIEN TU CHOISIE UNE PÉRIODE
--AND CONVERT(VARCHAR(10),MADATE,103) BETWEEN '01/01/2001' AND '19/02/2008'
Voila la requete que j'qi pu faire mais celle ci m'apporte toute les entrees apres 8:15:00 mais ce que je veux c'est n'est pas pour tout les entree mais seulement pour la 1er entrree du date
select distinct employeeNumber, lastname ,min(convert(datetime,hostdate,108)) as [inf],convert(varchar(20),hostdate,108) as time From feuil1
where convert(varchar,hostdate,103)='02/01/2007'
and readerdescription like '%ent%'
group by employeeNumber,lastname,hostdate
having (convert(varchar(20),hostdate,108)) > '08:15:00.00'
ummm beh suite à ... je dirai... à la suite non? ^^
SELECT DISTINCT employeeNumber, lastname, MIN(CONVERT(datetime ,hostdate, 108)) As [inf], CONVERT(varchar(20), hostdate, 108) As [time]
FROM feuil1
WHERE CONVERT(varchar, hostdate, 103) = '02/01/2007'
AND readerdescription like '%ent%'
GROUP BY employeeNumber, lastname, hostdate
HAVING (CONVERT(varchar(20), hostdate, 108)) > '08:15:00.00'
LIMIT 1;
celà dit (4ème fois), tu n'es pas sur le bon site !!
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
c' est ça la question !
ton expression ne cumule rien . Il n' ya pas d' opération d' agrégat (SommeDeReatrd) pour une période donnée.
Il te manque deux champs(généres)
-Différence entre Heure d' entrée et 08:15
-Mois(DatePointage)
<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
<hr />
/PRE>