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

MS SQL Server Discussion :

Calcul de consommation, comparer deux lignes


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    dsi
    Inscrit en
    Mars 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dsi

    Informations forums :
    Inscription : Mars 2003
    Messages : 13
    Par défaut Calcul de consommation, comparer deux lignes
    Bonjour a tous,
    Je cherche a calculer ma consommation d'eau par compteur. Ma table est :
    Date Compteur Valeur
    12/12/2008-CT1- 23456
    13/12/2008-CT1- 24234
    13/12/2008-CT2- 12000
    12/12/2008-CT2- 10000
    14/12/2008-CT1- 26789
    11/12/2008-CT2- 8900
    ....

    Je cherche a obtenir :
    12/12/2008-CT1- 23456 0
    13/12/2008-CT1- 24234 778
    14/12/2008-CT1- 26789 2555
    11/12/2008-CT2- 8900 0
    12/12/2008-CT2- 10000 1100
    13/12/2008-CT2- 12000 2000
    ....

    Donc un tri et un calcul de comparaison ligne a ligne.
    Puis ensuite un total des conso/semaine puis /mois par compteur.

    Mais la ... apres X essaisrien a faire. J'y arrive pas.

    Merci a tous pour vos lumières.

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2003
    Messages : 733
    Billets dans le blog
    8
    Par défaut
    Ci-dessous le requête SQL répondant à ta demande :

    1 - Création et peuplement de la table COMPTEUR
    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
    CREATE TABLE COMPTEUR
    (Id INT NOT NULL CONSTRAINT PK_COMPTEUR PRIMARY KEY,  
     Date DATETIME  NOT NULL , 
     Compteur VARCHAR(100)  NOT NULL, 
     Valeur   FLOAT NOT NULL  
    ) ON [PRIMARY]
    GO 
     
    INSERT INTO COMPTEUR (Id, date, Compteur, Valeur)
    VALUES 
     (1, '2008-12-12T00:00:00','CT1', 23456), 
     (2, '2008-12-13T00:00:00','CT1', 24234), 
     (3, '2008-12-13T00:00:00','CT2', 12000), 
     (4, '2008-12-12T00:00:00','CT2', 10000), 
     (5, '2008-12-14T00:00:00','CT1', 26789), 
     (6, '2008-12-11T00:00:00','CT2', 8900); 
    GO

    2 - Requête pour obtenir le résultat attendu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    WITH T AS
    (SELECT *, ROW_NUMBER() OVER(PARTITION BY Compteur ORDER BY Compteur, Date) AS N
    FROM COMPTEUR )
    SELECT T2.Date, T2.Compteur, T2.Valeur, 
           ISNULL((T2.Valeur - T1.Valeur),0)  AS Consommation
    FROM T AS T2
    LEFT OUTER JOIN T AS T1 
      ON T2.N-1 = T1.N 
      AND T2.Compteur = T1.Compteur
    ORDER BY T2.Compteur, T2.Date
    GO
    Résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Date	Compteur	Valeur	Consommation
    2008-12-12 00:00:00.000	CT1	23456	0
    2008-12-13 00:00:00.000	CT1	24234	778
    2008-12-14 00:00:00.000	CT1	26789	2555
    2008-12-11 00:00:00.000	CT2	8900	0
    2008-12-12 00:00:00.000	CT2	10000	1100
    2008-12-13 00:00:00.000	CT2	12000	2000
    A+

  3. #3
    Membre averti
    Profil pro
    dsi
    Inscrit en
    Mars 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dsi

    Informations forums :
    Inscription : Mars 2003
    Messages : 13
    Par défaut Merci
    Merci pour cette réponse claire et bien documentée.
    C'est MAGIQUE !
    Je ne suis pas assez calé en SQL pour arrivé a ca. Je vais etudier pour comprendre puis mettre en place.

    Merci encore pour la réponse.

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

Discussions similaires

  1. Calcul de variation entre deux lignes
    Par Caro0702 dans le forum SAS Base
    Réponses: 3
    Dernier message: 24/11/2011, 08h51
  2. Comparer deux lignes d'une même table dans une bdd
    Par Pierrot33 dans le forum Général Java
    Réponses: 3
    Dernier message: 19/11/2011, 19h04
  3. comparer deux lignes d'un recordset
    Par xargin dans le forum VBA Access
    Réponses: 6
    Dernier message: 01/09/2011, 10h43
  4. Comparer deux ligne par une fonction SI
    Par bigboss60 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/12/2008, 18h42
  5. Réponses: 5
    Dernier message: 09/01/2005, 19h54

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