Accueil > Forum > > > > Requete SQL - 3 mois glissants
Requete SQL - 3 mois glissants
lundi 27 avril 2009 à 09:47:14 |
Requete SQL - 3 mois glissants

bbertt
|
Avant toutes choses, Bonjour a tous Je tiens à vous remercier car le forum m'a permis de répondre à une grande quantité de questions durant mon stage. Cependant, aujourd'hui je me vois obliger de demander encore un plus d'aide de votre part : Serveur : SQL Server 2000 Dans le cadre de mon stage j'aimerais pouvoir rassembler dans même tableau la comparaison de deux données comme ceci. J'ai donc une base où j'ai les éléments suivant Affaire | Tps Passé sur l'affaire | Mois | Année XXXX | 100 h | 11 | 2008 XXXX | 400 h | 12 | 2008 XXXX | 800 h | 1 | 2009 XXXX | 200 h | 2 | 2009 XXXX | 500 h | 3 | 2009 Je voudrais obtenir la liste suivante (le but étant d'exploiter les données dans un tableau croisé dynamique) Affaire | Tps Passé sur l'affaire | Tps Passé durant les 3 derniers mois | Mois | Année XXXX | 800 h | 100 + 400 + 800 = 1300 h | 1 | 2009 XXXX | 200 h | 400 + 800 + 200 = 1400 h | 2 | 2009 XXXX | 500 h | 800 + 200 + 500 = 1500 h | 3 | 2009 Apprenant par en partie par autoformation, j'ai essayé différente méthode dont les sous requetes, mais je pense que je l'ai ai mal utilisées : J'ai testé des choses du genre, mais sans succès Select Affaire,codePoste, SUM(DureeExecution), (SELECT SUM(DureeExecution) FROM ....WHERE [Affaire] = Affaire ... ) FROM .... J'espere que ce que j'ai explicité ma demande au mieux, et qu'il est possible de le faire directement en sql. Mais je suis avide de toutes les proposition que vous pourrez me faire. Merci d'avance de votre attention, et encore plus pour ceux qui me répondront 
|
|
lundi 27 avril 2009 à 12:31:18 |
Re : Requete SQL - 3 mois glissants

aieeeuuuuu
|
Réponse acceptée !
Bonjour
une requete comme celle ci devrait faire l'affaire :
SELECT A.Affaire, A.Temps, A.Mois, A.annee, (A.temps + B.temps + C.temps) as Temps3derniersMois FROM Matable A INNER JOIN Matable B ON (A.Affaire = B.affaire AND CAST((CAST(A.Annee as varchar(10)) + '-' + CAST(A.Mois as varchar(10) + '-01') AS DATETIME) = DATEADD(month, -1, CAST((CAST(B.Annee as varchar(10)) + '-' + CAST(B.Mois as varchar(10) + '-01') AS DATETIME) INNER JOIN Matable C ON (A.Affaire = C.affaire AND CAST((CAST(A.Annee as varchar(10)) + '-' + CAST(A.Mois as varchar(10) + '-01') AS DATETIME) = DATEADD(month, -2, CAST((CAST(C.Annee as varchar(10)) + '-' + CAST(C.Mois as varchar(10) + '-01') AS DATETIME)
Je n'ai pas testé, mais l'idée est la je pense (utiliser 3 fois la meme table)
|
|
lundi 27 avril 2009 à 12:34:55 |
Re : Requete SQL - 3 mois glissants

gperuch
|
Salut, Je te conseil de faire une procédure stocké 1 car ça va etre plus simple 2 celui qui passera derniere toi comprendra plus vite ce que tu as voulu faire
la proc stock: (tu corrigeras les erreurs je la fais en live) create proc resultat as -- creation d'une table temporaire qui va contenir ton resultat create table # temp (Affaire varchar(50), TpsPassésurlaffaire int , mois_1 int ,mois_2 int ,mois_3 int , Mois int , Année int) -- 1er temps, insert la clef soit: insert into # temp (Affaire , TpsPassésurlaffaire , mois_1 int , Mois int , Année int) select Affaire , Tps Passé sur l'affaire , Tps Passé sur l'affaire , Mois , Année from ta_premiere_table
ensuite tu updates mois_2 et moi_3 de ta table temps avec les valeur du mois precedent...
mais là je te laisse te creuser un peu les neurones.... apres tout c'est à ca que sert un stage...
bon courage
greg
greg
|
|
lundi 27 avril 2009 à 14:03:25 |
Re : Requete SQL - 3 mois glissants

bbertt
|
Réponse acceptée !
Re Bonjour, En essayant de comprendre vos deux solutions, et en suivant les bon conseils de l'ami greg j'ai trouver une solution peut etre pas aussi propres que greg mais pour moi plus accessible, un petit plus claire que celle de aieeeuuuu mais pas pour autant meilleur et plus efficace .... Effectivement, comme je le laissais présager dans mon premier message, j'ai utilisais les sous requetes et les 'alias' qui permettent de remonné les tables ( merci pour le commentaire aieeeuuu  ... ) SELECT A.Affaire, A.Temps, A.Mois, A.annee, (SELECT SUM(T1.DureeExecution) FROM dbo.[xxxxxxx] AS T1 WHERE T1.Affaire = T.Affaire AND T1.Affaire = T.Affaire AND .... AND ...... FROM dbo.[xxxxxxx] as TWHERE DATEPART(yy,T.DateTravail) = 2009 Je tiens a remercier le forum pour sa réactivité et sa gentillesse .... Pr un premier forum, je suis surpris d'avoir eu une reponse si rapide PS : Merci pr tes encouragement greg  Bbertt
|
|
lundi 27 avril 2009 à 14:11:31 |
Re : Requete SQL - 3 mois glissants

aieeeuuuuu
|
re,
cette derniers solution ne prend pas en compte uniquement les 3 derniers mois, mais tous les mois précédents...
sinon pour exlpiquer un peu la solution que j'avais evoquée, l'idée et de faire une jointure de la table sur elle meme, afin que poru chaque affaire, on ait sur la meme ligne, le nombre d'heures pour le mois en cours (table A), le nombre d'heures pour le mois précédents (table B), et le nombre d'heure pour le mois d'avant( table C) après il ne reste qu'a faire la somme
ce qui rend ma requete compliquée, c'est justement que la date ne soit pas contenue dans un seul champs, et donc pour comparer, il faut caster, concatener, et recaster :)
|
|
samedi 2 mai 2009 à 15:35:06 |
Re : Requete SQL - 3 mois glissants

crn_c21
|
Plutot d'avis d'utiliser la procédure stockée.
Par contre pour la création de la table temporaire, mieux vaut la créer en mémoire pluto qu'en physique dans le tempsDb(plus rapide)
create table @temp table (Affaire varchar(50), TpsPassésurlaffaire int , mois_1 int ,mois_2 int ,mois_3 int , Mois int , Année int) -- 1er temps, insert la clef soit: insert into @temp (Affaire , TpsPassésurlaffaire , mois_1 , Mois , Année ) select Affaire , Tps Passé sur l'affaire , Tps Passé sur l'affaire , Mois , Année from ta_premiere_table
|
|
Cette discussion est classée dans : sql, affaire, mois, tps, 2009xxxx
Répondre à ce message
Sujets en rapport avec ce message
Requete SQL [ par ilanazco ]
Bonjour à tous,Je suis débutant en SQL et je dois faire la requete suivante :Calculez le montant totale pour le mois courante. J'ai des factures dans
SQL server 2008, import données CSV [ par livinho38 ]
Bonjour je dispose de plusieurs fichiers CSV, pr favoriser les futures requete il esdt interessant de lier les tables en fonctions de date. Cependant
sql server [ par mahamourta ]
salutsvp lorsque je fais une insertion dans une base de donnee sous sql server, le format de la date est anee-mois-jours,alors que je veux un format j
problème d'installation SQL server 2005 [ par vekta ]
Bonjour, je suis sous XP édition familiale version 2002 SP3. Je rencontre le message d'erreur suivant lors de l'installation de sql server 2005 : "L
UNE REQUETE SQL [ par zaydoo ]
BONJOUR LES AMIS je veux faire une requête qui affiche le nombre de commande par mois trié en ordre croissant; j'ai fais cette requête: SELECT MONTHN
SQL MS Querry Faire une somme Par jour [ par enio29 ]
bonjour à tous. Excusez moi par avance, je crain que pour ma première intervention le message soit mal placé... Alors j'ai des bases sur AS400 que j
Connexion distante à une BD sur SQL Server [ par cascadox ]
Bonjour, j'ai fait une application que je veux rendre accessible sur le réseau pour cela j'ai installer SQLServer sur la machine hot et le client sur
taille de la requete sql access [ par magirap ]
Salut tt le monde, je travaille avec sql access et j'ai rencontre un probleme de la taille de la requête sql lors de la creation des formulaires à par
SQL ? Qui pourrait me l'expliquer ? [ par talavera ]
Bonjour, Parmi vous tous, experts en SQL[^^clinoeil1], qui pourrait m'expliquer qu'est-ce que le SQL ? BOn, je sais que c'est un language de base de
Livres en rapport
|
Derniers Blogs
SQL SERVER : ESTIMER LE NOMBRE DE LIGNES RENVOYéES PAR UNE REQUêTE AVEC SQLCLRSQL SERVER : ESTIMER LE NOMBRE DE LIGNES RENVOYéES PAR UNE REQUêTE AVEC SQLCLR par christian
Dans certains cas très particuliers il peut être intéressant de savoir le nombre de ligne que va renvoyer une requête sans exécuter cette dernière. En effet les opérations de comptage sont généralement gourmande en ressource est très difficile à optim...
Cliquez pour lire la suite de l'article par christian [WF4] ACTIVITY AVEC VUE DéTAIL MASQUéE PAR DéFAUT, VIVE WPF![WF4] ACTIVITY AVEC VUE DéTAIL MASQUéE PAR DéFAUT, VIVE WPF! par JeremyJeanson
Le code suivant est destiné à répondre à une problématique courante en Workflow : Vous avez une activité dont le designer est complexe ou dont l'affichage prend une place importante à l'écran et la possibilité Collapse/Expand ne répond pas pleinement à vo...
Cliquez pour lire la suite de l'article par JeremyJeanson [SHAREPOINT 2010] CRéER ET PACKAGER UNE APPLICATION SILVERLIGHT POUR SHAREPOINT 2010[SHAREPOINT 2010] CRéER ET PACKAGER UNE APPLICATION SILVERLIGHT POUR SHAREPOINT 2010 par neodante
L'intégration native de Silverlight dans SharePoint 2010 représente une avancée majeure dans la conception des applications sur la plateforme SharePoint. Et pour cause, Silverlight repousse les limites du Web de SharePoint en offrant une expérience plus r...
Cliquez pour lire la suite de l'article par neodante [MIX10] KEYNOTE PREMIèRE JOURNéE - WINDOWS PHONE 7 ET SILVERLIGHT 4[MIX10] KEYNOTE PREMIèRE JOURNéE - WINDOWS PHONE 7 ET SILVERLIGHT 4 par cyril
Comme l'année dernière, me revoici à Las Vegas pour Mix10. Ce matin a eu lieu le premier keynote animé par Scott Guthrie. Le keynote s'est déroulé en 2 parties : Silverlight 4.0 et Windows Phone 7 Silverlight 4.0 Le taux de pénétration de Silverli...
Cliquez pour lire la suite de l'article par cyril [MIX10] RELEASE CANDIDATE DE SILVERLIGHT 4 ET RIA SERVICES[MIX10] RELEASE CANDIDATE DE SILVERLIGHT 4 ET RIA SERVICES par Audrey
C'est enfin officiel, grâce au MIX 2010, les Release Candidate de Silverlight 4 et de RIA Services sont sorties ! Pour les télécharger, voici les liens : Silverlight 4 RC : http://silverlight.net/getstarted/silverlight-4/ RIA Services RC : http://www.micr...
Cliquez pour lire la suite de l'article par Audrey
Forum
DESSINER MCDDESSINER MCD par debinfo
Cliquez pour lire la suite par debinfo ALFRESCALFRESC par DARCIA33
Cliquez pour lire la suite par DARCIA33
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|