IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Comparer des lignes [2008]


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Je produit des statistiques pour le SDIS 47.
    Inscrit en
    Avril 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Je produit des statistiques pour le SDIS 47.
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2014
    Messages : 73
    Par défaut Comparer des lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    SELECT DISTINCT AE1.Num_Inter, 
                    AE1.Matricule, 
                    AE1.Nom_Agent, 
                    AE1.[Date], 
                    AE1.Centre, 
                    AE1.Engin, 
                    AE1.Renfort, 
                    AE1.Num_Dep_Eng, 
                    AE1.Debut, 
                    AE1.Fin, 
                    AE1.Num_Depart, 
                    AE1.Annee
     
          FROM
                  (SELECT RIGHT(AE.ID_INTERVENTION,5) Num_Inter,
                          AE.ID_AGENT Matricule,
                          AE.NOM_PRENOM_AGENT Nom_Agent,
                          CONVERT(VARCHAR,AE.DH_DEBUT_INTER,103) Date,
                          AE.ID_TYPE_ENGIN+' '+ CONVERT(VARCHAR,AE.NUMERO_MATERIEL) Engin,
                          AE.NUM_RENFORT Renfort,
                          AE.NUM_ORDRE_DEPART_ENGIN Num_Dep_Eng,
                          C.LIB_CENTRE Centre,
                          AE.DH_DEPART Debut,
                          AE.DH_FIN Fin,
                          ROW_NUMBER( ) OVER(PARTITION BY AE.NOM_PRENOM_AGENT,CONVERT(VARCHAR,AE.DH_DEPART,103) ORDER BY RIGHT(AE.ID_INTERVENTION,5),AE.DH_DEPART) Num_Depart,
                          YEAR(AE.DH_DEBUT_INTER) Annee
     
                    FROM    OPS_AGENT_ENGAGE  AE
     
                            INNER JOIN OPS_CENTRE C ON C.ID_CENTRE = AE.ID_CENTRE) AE1 
     
                            WHERE   AE1.Annee = YEAR(GETDATE()) 
     
                            ORDER BY AE1.Nom_Agent,AE1.Debut
    Mon résultat :

    Num_Inter   Matricule  Nom_Agent         Date              Centre          Engin        Debut                    Fin                              Num_Depart
    01132	    4xxxx	 JEAN CLAUDE      18/01/2015    VALLEE DU LOT	VLU 1       18/01/2015 13:00:00	18/01/2015 13:27:00    1
    01135	    4xxxx	 JEAN CLAUDE      18/01/2015    VALLEE DU LOT	VSRL 1     18/01/2015 13:25:00	18/01/2015 14:56:00    2
    01152	    4xxxx	 JEAN CLAUDE      18/01/2015    VALLEE DU LOT	VSAV 1     18/01/2015 16:56:58	18/01/2015 18:26:04    3	
    
    Mon problème est le suivant :
    Sur l'inter N° 1132 j'ai une fin à 13 h 27.
    Sur l'inter N° 1135 j'ai un début à 13 h 25. Ce qui logiquement n'est pas possible.
    Mon but est de comparer les lignes et avec ces 2 critères et que quelque soit le nombre de ligne(N° Inter), je puisse comparer mon DH Début par % au DH Fin afin de faire apparaitre ces incohérences horaires.

    Cordialement.

    Taz

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 999
    Billets dans le blog
    6
    Par défaut
    Sans un jeu de données, difficile de vous comprendre; merci de respecter la charte de postage : http://www.developpez.net/forums/d96...vement-poster/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2008
    Messages
    699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2008
    Messages : 699
    Par défaut
    A partir de sql 2012 il y a les fonctions lead et lag, qui couplées avec une requête contextuelle permettent de faire les contrôle que vous voulez.

    C'est ce que j'utilise pour contrôlé la validité/cohérence des timbrages des employés.

    A+

  4. #4
    Membre confirmé
    Homme Profil pro
    Je produit des statistiques pour le SDIS 47.
    Inscrit en
    Avril 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Je produit des statistiques pour le SDIS 47.
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2014
    Messages : 73
    Par défaut Comparer des lignes
    Je comprend bien ce que vous voulez dire, mais je ne sais pas du tout le faire. Faire des comparaisons d'une ligne sur les lignes inférieures sur un critère précis, en l'ocuurence le DH_Début par % au au DH_FIN par restent pour moi une grosse difficulté.

    Taz

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2008
    Messages
    699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2008
    Messages : 699
    Par défaut
    Je ne comprend pas le but de "DH_Début par % au au DH_FIN" si le but est de savoir si la date de début est inférieure ou supérieur à la date fin précédente.

    Du coup difficile de lancer un bout de code...

  6. #6
    Membre confirmé
    Homme Profil pro
    Je produit des statistiques pour le SDIS 47.
    Inscrit en
    Avril 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Je produit des statistiques pour le SDIS 47.
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2014
    Messages : 73
    Par défaut Comparer des lignes
    C'est exactement ce que je recherche à faire.
    Dans le tableau, on peut voir que j'ai un DH_Début < à un DH_Fin.
    Mon but est de pouvoir faire apparaitre cette incohérence afin de pouvoir modifier ces erreurs.
    ex : Inter N° 1132 DH_FIN : 11h27
    Inter N° 1135 DH_DEBUT : 11h25
    Sinon j'avais pensé avec l'aide d'un ROW_NUM, j'ai essayé. Cela fonctionne mais pose le problème c'est que je peux comparer 2 lignes. Hors si un agent fait 10 départ dans la journée, je suis obliger de faire DH_DEBUT ligne 2 par % DH_FIN ligne 1 ,DH_DEBUT ligne 3 par % DH_FIN ligne 2 et ainsi de suite mais cela devientdrait ingérable.

    Taz

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comparer des lignes identiques
    Par idhmida dans le forum Débutez
    Réponses: 7
    Dernier message: 31/05/2012, 15h03
  2. [XL-2007] Comparer des lignes dans le même tableau
    Par bob633 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/02/2011, 17h59
  3. Comparer des lignes
    Par Oxygene18 dans le forum Général Python
    Réponses: 6
    Dernier message: 01/03/2008, 17h18
  4. Réponses: 6
    Dernier message: 24/06/2007, 01h13
  5. comment comparer des lignes ou des colonnes
    Par juldace dans le forum SQL
    Réponses: 3
    Dernier message: 29/05/2007, 12h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo