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 :

[SQL-SERVER]Cumuls de valeurs pour un temps donné


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17
    Par défaut [SQL-SERVER]Cumuls de valeurs pour un temps donné
    Bonjour,
    Voici mon problème:
    j'ai une table du type:

    EQ_Name_________________Value______DateHisto
    Balise_106_3_A_Alpha_______897_______2011-01-05 12:31:29.2410000
    Balise_106_3_A_Alpha_______25________2011-01-05 12:31:32.2410000
    Balise_106_3_A_Alpha_______400_______2011-01-05 12:31:35.2410000

    et je voudrai ajouter une colonne cumuls des valeurs de 'Value' (A T0 cumuls = 0)

    EQ_Name______________Value______DateHisto __________________Cumuls
    Balise_106_3_A_Alpha____897_______2011-01-05 12:31:29.2410000__0
    Balise_106_3_A_Alpha____25________2011-01-05 12:31:32.2410000__25
    Balise_106_3_A_Alpha____400_______2011-01-05 12:31:35.2410000__425


    J'ai essayé cette requête trouvé pour oracle mais ca ne fonctionne pas sur sql-server:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT  
          [EQ_NAME]
          ,[Value]
          ,[DateHisto]
          ,sum(Value) over(partition by EQ_NAME order by DateHisto) as cumuls
      FROM [PanoIT].[dbo].[Histo_Flat]
    Si quelqu'un a une idée de comment faire...

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    1/ quelle est votre version de SQL Server ?

    2/ Avez-vous une contrainte d'unicité sur (EQ_Name, DateHisto) ?

  3. #3
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Re,

    Essayez ceci, qui fonctionne si vous avez la contrainte d'unicité, et que vous êtes au moins en SQL Server 2005 (pour les CTE)

    Code sql : 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
    35
     
    DECLARE @Histo TABLE(
    	Lib		VARCHAR(50)
    	,Val	INT
    	,Dte	DATETIME
    	)
     
    INSERT INTO @Histo VALUES('Balise_106_3_A_Alpha',897, '2011-01-05 12:31:29.241')
    INSERT INTO @Histo VALUES('Balise_106_3_A_Alpha',25,'2011-01-05 12:31:32.241')
    INSERT INTO @Histo VALUES('Balise_106_3_A_Alpha',400,'2011-01-05 12:31:35.241')
    INSERT INTO @Histo VALUES('Balise_106_3_B_Alpha',897, '2011-01-05 12:31:29.241')
    INSERT INTO @Histo VALUES('Balise_106_3_B_Alpha',24,'2011-01-05 12:31:32.241')
    INSERT INTO @Histo VALUES('Balise_106_3_B_Alpha',400,'2011-01-05 12:31:35.241')
     
    ;WITH CTE (Lib, Val, Dte, Somme) AS (
    	SELECT Lib, Val, Dte, 0
    	FROM(
    		SELECT lib, val,Dte, MIN(Dte) OVER(PARTITION BY Lib) AS MinDte
    		FROM @Histo H
    	)Tmp
    	WHERE Dte = MinDte	
    	UNION ALL
    	SELECT Lib, Val, Dte, Somme
    	FROM(
    		SELECT H.lib, H.val,H.Dte, MIN(H.Dte) OVER(PARTITION BY H.Lib) AS MinDte, CTE.Somme + H.val AS Somme
    		FROM @Histo H
    		INNER JOIN CTE ON CTE.Lib = H.Lib
    		WHERE H.Dte > CTE.Dte
    	)Tmp
    	WHERE Dte = MinDte	
     
    )
    SELECT Lib, Val, Dte, Somme
    FROM CTE
    ORDER BY Lib, Dte

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17
    Par défaut
    Merci pour ta reponse
    Alors ma version de SQL-Server est 2008R2

    Je ne sait pas comment on vois s'il y a des contrainte d'unicité (je suis débutant...)

  5. #5
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Citation Envoyé par miczl57 Voir le message
    Merci pour ta reponse
    Alors ma version de SQL-Server est 2008R2
    C'est déjà une bonne nouvelle

    Je ne sait pas comment on vois s'il y a des contrainte d'unicité (je suis débutant...)
    Dans management studio, clique droit sur la table > script table as > create to > new query window...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17
    Par défaut
    Alors voici ce que j'obtient:
    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
    USE [PanoIT]
    GO
     
    /****** Object:  View [dbo].[Histo_Flat]    Script Date: 01/19/2011 15:44:15 ******/
    SET ANSI_NULLS ON
    GO
     
    SET QUOTED_IDENTIFIER ON
    GO
     
     
    CREATE VIEW [dbo].[Histo_Flat]
    AS
    SELECT     [Private].Raw_Histo.Id, [Private].Raw_Histo.RefData AS RefData,
                          [Private].Raw_Desc_Data.Name AS IT_NAME, 
                          [Private].Raw_Desc_Data.Info AS IT_INFO, [Private].Raw_Desc_Equip.Name AS EQ_NAME, [Private].Raw_Desc_EquipTypes.Name AS EQ_TYPE, 
                          [Private].Raw_Desc_EquipModels.Name AS EQ_MODEL, [Private].Raw_Desc_Equip.Info AS EQ_INFO, [Private].Raw_Desc_DataGroups.Name AS IT_GROUP, 
                          [Private].Raw_Desc_Data.Priority, [Private].Raw_Desc_Categories.Name AS IT_CAT, [Private].Raw_Desc_Sites.Name AS IT_SITE_NAME, 
                          [Private].Raw_Desc_Sites.Info AS IT_SITE_INFO, [Private].Raw_Histo.Value,
                          [Private].Raw_Histo.DateHisto AS DateHisto, [Private].Raw_Histo.DateHistoUTC AS DateHistoUTC
    FROM         [Private].Raw_Histo INNER JOIN
                          [Private].Raw_Desc_Data ON [Private].Raw_Desc_Data.Id = [Private].Raw_Histo.RefData INNER JOIN
                          [Private].Raw_Desc_Equip ON [Private].Raw_Desc_Equip.Id = [Private].Raw_Desc_Data.RefEquip INNER JOIN
                          [Private].Raw_Desc_DataGroups ON [Private].Raw_Desc_DataGroups.Id = [Private].Raw_Desc_Data.RefDataGroup INNER JOIN
                          [Private].Raw_Desc_EquipModels ON [Private].Raw_Desc_EquipModels.Id = [Private].Raw_Desc_Equip.RefEquipModel INNER JOIN
                          [Private].Raw_Desc_EquipTypes ON [Private].Raw_Desc_EquipTypes.Id = [Private].Raw_Desc_EquipModels.RefEquipType INNER JOIN
                          [Private].Raw_Desc_Categories ON [Private].Raw_Desc_Categories.Id = [Private].Raw_Desc_Data.RefCategory INNER JOIN
                          [Private].Raw_Desc_Sites ON [Private].Raw_Desc_Sites.Id = [Private].Raw_Desc_Equip.RefSite
     
    GO

  7. #7
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    c'est une vue...

    pourrais tu faire de même sur la table Raw_Histo dans ce cas ?

Discussions similaires

  1. sql server ou open source pour le décisionnel
    Par lamyae_84 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 18/03/2007, 10h55
  2. Réponses: 4
    Dernier message: 22/05/2006, 10h25
  3. [SQL Server] ALTER TABLE : Valeurs NULL et par défaut
    Par LeNovice dans le forum Langage SQL
    Réponses: 3
    Dernier message: 09/05/2006, 21h38
  4. [sql server 7.0] valeurs de colonnes(débutante)
    Par kouta20 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 20/12/2005, 18h27
  5. Réponses: 3
    Dernier message: 10/08/2005, 11h11

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