[SS2005] probleme requete

Résolu
sdisp Messages postés 75 Date d'inscription jeudi 27 janvier 2005 Statut Membre Dernière intervention 17 octobre 2008 - 15 oct. 2008 à 14:24
sdisp Messages postés 75 Date d'inscription jeudi 27 janvier 2005 Statut Membre Dernière intervention 17 octobre 2008 - 17 oct. 2008 à 09:18
Bonjour.


Je suis un peu rouillié en SQL, j'ai donc un souci pour faire une requête qui répondrait à cette demande:


J'ai une table (Sous SS2005) qui contient des passages: tabPassage avec les champs:

- date de type datetime format yyyy-mm-jj hh:mm:ss mmm

- noPersonne de type entier

- noCaisse : de type entier

<col style= \"width: 152pt;\" width=\"202\" /><col style=\"width: 119pt;\" width=\"159\" /><col style=\"width: 107pt;\" width=\"142\" />----
date, noPersonne, noCaisse, ----
2008-01-01
10:00 000  , 100, 4, ----
2008-01-01
10:10 000  , 101, 7, ----
2008-01-01
10:20 000  , 100, 5, ----
2008-01-01
11:00 000  , 100, 3, ----
2008-01-01
11:00 000  , 101, 4, ----
2008-02-01
10:00 000  , 100, 2, ----
2008-02-01
10:05 000  , 101, 1, ----
2008-02-01
10:30 000  , 102, 3, ----
2008-02-01
18:00 000  , 100, 5


Et je voudrais récupérer par jour le 1er passage de chaque personne soit :

<col style =\"width: 152pt;\" width=\"202\" /><col style=\"width: 119pt;\" width=\"159\" /><col style=\"width: 107pt;\" width=\"142\" />----
date, noPersonne, noCaisse, ----
2008-01-01
10:00 000  , 100, 4, ----
2008-01-01
10:10 000  , 101, 7, ----
2008-02-01
10:00 000  , 100, 2, ----
2008-02-01
10:05 000  , 101, 1, ----
2008-02-01
10:30 000  , 102, 3

Je ne vois pas comment faire ceci! Une petite idée?

Merci d'avance pour votre aide.
sdisp.

5 réponses

danious Messages postés 27 Date d'inscription jeudi 8 juillet 2004 Statut Membre Dernière intervention 5 novembre 2008
16 oct. 2008 à 17:20
En fait j'ai trouvé une solution qui n'est pas si compliquée que ça. Je te donne juste le corps de la requete :

SELECT
    cast(convert (...ladate...) AS datetime) // la date du jour
    // + autres champs
FROM MATABLE T1WHERE T1.unedate = (
    SELECT MIN(T2.unedate)
        FROM MATABLE T2
        WHERE convert (...ladate...)=convert (...ladate...) // comparer les dates du jour
            AND T2.noPersonne=T1.noPersonne )
3
danious Messages postés 27 Date d'inscription jeudi 8 juillet 2004 Statut Membre Dernière intervention 5 novembre 2008
16 oct. 2008 à 09:46
Bonjour,

Tu peux procéder de la façon suivante :
- créer un curseur qui parcourt ta table en sélectionnant chaque couple distinct (date du jour, noPersonne). Pour obtenir la date du jour à partir de ta date, tu peux utiliser la fonction CONVERT.
- remplir une table temporaire avec un enregistrement pour chaque element de ton curseur. Il faudra tester par la date du jour, c'est-à-dire utiliser la fonction CAST (si tu as utilisé CONVERT), et chercher la date du premier passage en utilisant la fonction MIN.
- retourner la table temporaire

Si ça se trouve, c'est même possible de faire tout ça en une seule requète, mais là tout de suite je ne vois pas comment.
0
sdisp Messages postés 75 Date d'inscription jeudi 27 janvier 2005 Statut Membre Dernière intervention 17 octobre 2008 1
16 oct. 2008 à 15:13
Bonjour Danious.

Merci pour ta réponse je comprend bien le principe.
Mais je pense également qu'il doit bien y avoir une solution pour faire ça d'un coup.

Quelqu'un aurais une piste?

Merci.
0
sdisp Messages postés 75 Date d'inscription jeudi 27 janvier 2005 Statut Membre Dernière intervention 17 octobre 2008 1
17 oct. 2008 à 09:16
Merci beaucoup Danious, ça ma l'aire nickel.

Bonne journée.
sdisp.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sdisp Messages postés 75 Date d'inscription jeudi 27 janvier 2005 Statut Membre Dernière intervention 17 octobre 2008 1
17 oct. 2008 à 09:18
Petite précision, j'ai fais mes convert comme ceci:

CONVERT(char(10), T1.date, 103)

Bonne journée.
Et merci encore.
0
Rejoignez-nous