|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 17 ![]() |
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 :
|
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour,
1/ quelle est votre version de SQL Server ? 2/ Avez-vous une contrainte d'unicité sur (EQ_Name, DateHisto) ? |
|
|
00
|
|
|
#3 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
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 :
|
||
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 17 ![]() |
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...) |
|
|
00
|
|
|
#5 | |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
C'est déjà une bonne nouvelle
Citation:
|
|
|
|
00
|
|
|
#6 | ||
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 17 ![]() |
Alors voici ce que j'obtient:
Code :
|
||
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
c'est une vue...
pourrais tu faire de même sur la table Raw_Histo dans ce cas ? |
|
|
00
|
|
|
#8 | ||
![]() ![]() |
Vous pouvez aussi essayer ainsi :
Code :
__________________
Email : http://scr.im/waldar |
||
|
00
|
|
|
#9 | ||
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 17 ![]() |
Pour la table j'obtient ceci:
Code :
|
||
|
|
00
|
|
|
#10 | ||
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 17 ![]() |
Bon j'ai modifié la requête en utilisant mes nom de champ:
Code :
Msg*240, Niveau*16, État*1, Ligne*1 Les types ne correspondent pas entre la partie d'ancrage et la partie récursive dans la colonne "Somme" de la requête récursive "CTE". |
||
|
|
00
|
|
|
#11 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
visiblement, ta colonne value est de type float, il faut donc caster dans l'ancrage de la CTE :
Code sql :
|
||
|
|
00
|
|
|
#12 | ||
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 17 ![]() |
Bon après test de cette requête :
Code :
Msg*530, Niveau*16, État*1, Ligne*2 L'instruction a été terminée. La récursivité maximale 100 a été épuisée avant la fin de l'instruction. |
||
|
|
00
|
|
|
#13 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
par défaut le nombre de récursions est limité à 100
Ajoute cette ligne à la fin de ta requete pour spécifier un nombre illimité de récursions : |
|
|
00
|
|
|
#14 | ||
|
Membre Expert
![]() Inscription : mars 2005 Messages : 1 565 ![]() |
Votre cumul peut se faire par simple autojointure si je ne m'abuse :
Code :
|
||
|
|
00
|
|
|
#15 |
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 17 ![]() |
Merci a tous pour vos réponses.
vmolines ta solution fonctionne,par contre mes balises me font une mesure toutes les 3 secondes donc c'est très lent. je vais essayer de faire un cumul toutes les heures. |
|
|
00
|
|
|
#16 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
En effet vmonlines !
Sauf que comme il ne veut pas prendre en compte la "première valeur", le code serait plutot celui-ci : Code sql :
|
||
|
|
00
|
|
|
#17 |
![]() ![]() |
Jetez un œil ma solution qui a été oubliée je pense, non pas que je cherche à me faire mousser, mais je pense que côté performance elle doit tenir la route.
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#18 |
|
Membre Expert
![]() Inscription : mars 2005 Messages : 1 565 ![]() |
C'est possible et pas de mal à rappeler une solution oubliée.
Côté performance de ma requête, elle mériterait : - de travailler avec une clé qui ne soit pas du texte (EQ_NAME) - de bénéficier d'un index couvrant la date - de s'affranchir de la vue initiale qui doit bien alourdir le tout. Je n'ai pas pris le temps de l'analyser. |
|
|
00
|
|
|
#19 | |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Citation:
|
|
|
|
00
|
|
|
#20 | ||||
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 17 ![]() |
En fait a part la première solution de vmolines les autres solutions ne m'affiche toujours rien au bout de 5 minutes...
Par contre j'ai 27 EQ_NAME différend,si je met une condition Where avec le nom de la balise le resultat est faux... Code :
Code :
|
||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com