|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : mai 2009 Messages : 171 ![]() |
Bonjour à tous,
Je voudrais faire une requête sql qui me renvoi la somme des valeurs de façon cumulative sur les mois de l'année depuis le début de l'année pour voir la progression. Je m'explique : j'ai une table contenant par date des produits et des quantités vendues. Je voudrais faire une requête qui me renvoi par produit et par mois la somme des quantités depuis le début de l'année de la façon suivante : pour janvier : somme des quantités de janvier pour février : somme des quantités de janvier + février pour mars : somme des quantités de janvier + février + mars etc ... est ce possible et facilement réalisable ? Merci d'avance de votre aide. |
|
|
00
|
|
|
#2 | ||||
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 950 ![]() |
Vous n'avez pas beaucoup cherché !
http://sqlpro.developpez.com/article...clause-window/ De plus vous n'avez pas respecté la charte de postage : http://www.developpez.net/forums/d96...vement-poster/ Code :
Code :
A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
||||
|
00
|
|
|
#3 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 665 ![]() |
Bonjour,
C'est faisable dès SQL Server 2005 en utilisant une requête récursive introduite par une expression de table commune. Donnez la liste des tables qui participent à votre requête ainsi que leur définition pour que nous puissions vous aider à écrire votre requête @++
__________________
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 |
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : mai 2009 Messages : 171 ![]() |
Sqlpro : J'ai cherché (pas des masses je le reconnais mais un peu tout de même) mais j'aurai pu chercher longtemps avant de découvrir les fonctions OLAP ou fenestrées pour solutionner mon problème ! Et puis le forum n'est il pas la pour ça ? En tout cas, Merci pour ta solution. Je vais la tester.
Elsuket : Ma table est toute simple : Code_produit, Date, Quantité. Qu'entends tu par 'requête récursive introduite par une expression de table commune' ? est ce que ça rejoint la proposition de Sqlpro ? |
|
|
00
|
|
|
#5 | |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 950 ![]() |
Citation:
A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Inscription : mai 2009 Messages : 171 ![]() |
Merci, ça fonctionne super bien. Bonne journée à tous.
|
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : mai 2009 Messages : 171 ![]() |
Bonjour,
J'ai placé cette requête dans mon rapport RS mais après quelques tests il s'avère que cela ne fonctionne pas dans le cas suivant : si je n'ai pas de valeur pour le dernier mois. par exemple si j'interroge mon rapport en mars mais que je n'ai pas encore de valeur pour mars, il ne m'affiche rien alors que je voudrais qu'il me répète la valeur qu'il y avait sur février. (et ainsi de suite sur les autres mois de l'année). existe il un moyen de faire cela ? merci d'avance. |
|
|
00
|
|
|
#8 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 950 ![]() |
Faites un CROSS JOIN avec une table de temps à la granularité voulue. En effet SQL ne sait pas inventer par miracle des données qu'il n'a pas déjà dans la base....
A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#9 |
|
Membre du Club
![]() Inscription : mai 2009 Messages : 171 ![]() |
Oui bien sur, je sais bien que ce phénomène est logique ! c'était justement comment contourner ce fonctionnement que je cherchais. Je vais essayer avec le CROSS JOIN.
Un grand merci, A+ |
|
|
00
|
|
|
#10 | ||||||||||||
|
Membre du Club
![]() Inscription : mai 2009 Messages : 171 ![]() |
Au secours sqlpro !! je ne m'en sors absolument pas !
voila ma table de test : Code :
et ma requête d'origine : Code :
Code :
Code :
J'ai donc essayé le code suivant : Code :
Code :
|
||||||||||||
|
|
00
|
|
|
#11 | ||
|
Membre du Club
![]() Inscription : mai 2009 Messages : 171 ![]() |
J' arrive finalement à mon résultat en faisant comme suis :
Code :
Par contre c'est assez long et ça ne peut pas marcher si on veut gérer au delà de 1 mois sans vente. (ou alors il faudrait faire des successions d'union ...). Donc, je ne pense pas que ça soit la bonne solution. Si quelqu'un peut m'indiquer comment faire avec le cross join ? |
||
|
|
00
|
|
|
#12 | ||
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 950 ![]() |
Postez le DDL de vos tables !
Sinon le principe est de faire la chose suivante : Code :
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
||
|
00
|
|
|
#13 | ||||||||||||
|
Membre du Club
![]() Inscription : mai 2009 Messages : 171 ![]() |
Cela ne marche pas :
le script de création de ma table temps : Code :
Code :
Code :
Code :
Code :
Code :
|
||||||||||||
|
|
00
|
|
|
#14 | ||||
|
Membre du Club
![]() Inscription : mai 2009 Messages : 171 ![]() |
Ca y est, je crois que je le tiens !
il suffit d'enlever la DATE dans la requête : Code :
Code :
|
||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com