|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Inscription : mai 2011 Messages : 8 ![]() |
Bonjour,
Quasi débutant en SQL, je suis actuellement en stage ou m'a été confié la tâche de suivre les consommations d'eau de l'usine. Pour ce faire, un capteur analogique me remonte l'information de la consommation tous les x temps en remplissant un tableau de le base de donnée et ce remet à 0 à chaque fin de semaine. Exemple du tableau: http://imageshack.us/photo/my-images/228/exempleot.jpg/ Pour avoir ma valeur en fin de semaine il me suffit donc d'afficher la valeur max (qui sera forcément la dernière valeur prise avant la remise à 0) J'arrive à afficher cette valeur semaine par semaine grâce au code suivant: Code :
Maintenant je voudrais afficher cette valeur par mois Littéralement, il me faut donc "la somme des valeurs max des semaines par mois" Mais voila si j'affiche simplement la somme par le code suivant: Code :
Autrement dit si on reprend l'exemple affiché au début il m'indiquerait donc 240 au lieu de 120 Et je ne sais pas comment faire pour contourner ce problème Merci d'avance pour toutes aides que vous pourrez me fournir Cordialement |
||||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour,
Pouvez vous poster la structure de votre table. Quel est le type de la colonne DateTime (est-ce son vrai nom, auquel cas c'est une mauvaise idée : DATETIME est un mot réservé car c'est une type de données) pouvez vous également préciser votre version de Sql Server si votre colonne datetime est de type DATETIME, pourquoi déclarer @DEB_AN comme VARCHAR ? Vous n'avez de toute façon pas besoin d'utiliser une variable, si vous ne voulez les données que depuis le début de l'année en cours, votre filtre peut s’écrire ainsi : Code SQL :
|
||
|
|
10
|
|
|
#3 | ||||||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 669 ![]() |
Bonjour,
Effectivement vous pouvez simplifier l'écriture de votre requête : Code :
Mais un problème demeure : une semaine peut être à cheval sur deux mois, et aussi deux années. Dans ce cas, si nous écrivons : Code :
Dès lors la requête suivante : Code :
@+
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
||||||
|
20
|
|
|
#4 | ||
|
Invité de passage
![]() Inscription : mai 2011 Messages : 8 ![]() |
Tout d'abord merci à vous deux vos réponses m'on été très utile
Pour répondre à aieeeuuuuu il ne m'est pas possible de vous expliquer clairement la structure de la table tout simplement parce que je n'y ai pas accès en intégralité, la base de données existant déjà à mon arrivé je manque de visibilité sur ce point Je ne peux pas non plus modifier cette table Ce que je sais en revanche c'est que la colonne DateTime porte effectivement ce nom La version de SQL utilisé est SQL Server Management Studio 2005 Après modification de la requête les valeurs on maintenant l'air de correspondre, en revanche j'ai un petit soucis avec le 1er ORDER BY: Code :
Msg 1033, Level 15, State 1, Line 20 The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP or FOR XML is also specified. Lorsque je passe le ORDER BY en commentaire plus de problème |
||
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour
postez la requête complète. Visiblement vous faites un "ORDER BY" dans une pseudo table. postez la requête complète afin que l'on puisse vous aider ! |
|
|
00
|
|
|
#6 | ||
|
Invité de passage
![]() Inscription : mai 2011 Messages : 8 ![]() |
Voici l'intégralité de la requête:
Code :
|
||
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
ok, je n'avais pas vu que c'était issu de la requête d'Elsuket, qui a du travailler sans filet sur ce coup
La clause enlevez donc le Mais le problème soulevé par ElSuket (semaine à cheval sur deux mois) reste entier ! |
|
|
00
|
|
|
#8 | ||||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 669 ![]() |
Citation:
Citation:
Citation:
Effectivement celui-ci est inutile. Citation:
@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
||||
|
10
|
|
|
#9 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
arfff
En effet, moi aussi je suis sans filet ![]() Je voulais bien parler de la clause ORDER BY... J’édite de ce pas |
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : mai 2011 Messages : 8 ![]() |
Oui en effet c'est un problème auquel je n'avais pas du tout pensé
A ce moment là j'ais pour idée de dire qu'1 mois = 4 semaines et que tous les mois multiples de 3 = 5 semaines (Janvier=4, Février=4, Mars=5 etc...) C'est ce qui respecterais le mieux l'objectif du projet, sachant de plus que l'entreprise est organisée en grande partie comme sa. Je vais d'abords essayer de trouver par moi même sans regarder vos réponses (le but reste quand même de chercher |
|
|
00
|
|
|
#11 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 669 ![]() |
A ce moment-là je crois que vous feriez bien d'implémenter un modèle à l'image de celui que donne SQLPro ici, sinon vous allez vous retrouver avec des requêtes un peu immondes ... et pas performantes
@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
10
|
|
|
#12 |
|
Invité de passage
![]() Inscription : mai 2011 Messages : 8 ![]() |
Merci beaucoup!
Je mettrais tout sa en place dès que j'en aurais l'occasion Je marque le sujet comme résolu
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com