|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Frédéric Administrateur de base de données Inscription : avril 2011 Messages : 9 ![]() |
Bonjour,
J'ai fait plusieurs recherches sur le forum, mais je n'arrive pas à trouver de sujet similaire alors je me lance. Tout d'abord, la structure de mes tables versions simplifiées pour expliquer mon problème : - occupation(numero_occupation,individu,type_occupation#,duree) - type_occupation(type_occupation,libelle_occupation) La table type_occupation contient une liste de nomenclature, celles qui m'intéressent : 1-Heures supplémentaires 2-Récup heures supp. Et dans la table occupation, j'ai un enregistrement par individu pour chaque type occupation et par occupation. Par exemple pour l'individu JEAN j'aurais autant d'enregistrements avec un type_occupation=1 (heures supp) qu'il n'en a fait réellement 589-JEAN-1-120 590-JEAN-1-30 591-JEAN-1-15 592-JEAN-2-30 593-JEAN-2-45 Durée en minutes. Maintenant mon problème, je souhaiterais avec un select pouvoir cumuler la somme des heures supp, puis la somme des congés compensateurs sur une même ligne pour chaque individu. Dans l'exemple du dessus, je voudrais pouvoir avoir : JEAN - Heures supp:165minutes - Récup : 75minutes - Reste:90minutes FRED - .................. J'ai tenté avec sum(duree) over partition by également en faisant deux fois appels à ma table occupation avec des alias différents, mais que nenni ! Je bloque depuis un moment dessus et je n'arrive pas à trouver de solution, si ce n'est la solution pl_sql mais j'ai par habitude de créer mes requètes par des vues qui sont plus simples pour mes collègues pour ré-extraire les infos actualisées en temps réel. Toute proposition est la bienvenue, et désolé si s'est une question de newbie :/ Merci à tous. Frédéric. |
|
|
00
|
|
|
#2 | ||
![]() ![]() |
Vous cherchez à effectuer un PIVOT, on le fait ainsi :
Code :
__________________
Email : http://scr.im/waldar |
||
|
00
|
|
|
#3 | ||||||
|
Candidat au titre de Membre du Club
![]() Frédéric Administrateur de base de données Inscription : avril 2011 Messages : 9 ![]() |
Merci pour cette réponse aussi rapide, je tente depuis ce midi de mettre en application l'exemple sur ma base réelle mais sans succès :s
J'ai finalement repris le principe de ton exemple, deux requêtes et une troisième pour fusionner les résultats et effectuer le calcul du solde, ce qui me donne donc 3 vues. Moins propre que ce que j'aurais souhaité, mais là clairement, je pense pas avoir les compétences requises :/ A moins que quelqu'un ne sache retranscrire mes requêtes : Code :
Code :
Code :
|
||||||
|
|
00
|
|
|
#4 |
![]() ![]() |
Il y a un petit condensé de mauvais et/ou vieux code dans ces requêtes !
Quelle est votre version d'Oracle ?
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Frédéric Administrateur de base de données Inscription : avril 2011 Messages : 9 ![]() |
|
|
|
00
|
|
|
#6 | ||
![]() ![]() |
Vraiment sans aucune arrière pensée, essayez de passer de temps en temps sur ce forum, même sur des sujets qui à priori ne vous intéressent pas : il regorge d'excellentes idées et de syntaxe moderne !
Revenons à vos requêtes. J'ai procédé aux modifications suivantes :
Au final, ça devrait donner ceci (et ça remplace vos trois requêtes) : Code :
__________________
Email : http://scr.im/waldar |
||
|
20
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Frédéric Administrateur de base de données Inscription : avril 2011 Messages : 9 ![]() |
"Ca vient de moi les mauvais et vieux codes"
S'était sans arrières pensées et ironique, je suis un peu resté bloqué sur les syntaxes sql d'il y a 10 ans :/ C'est comment dire... magique ! 3 fois moins de codes. Mille merci! je vais me plonger dedans corps et âmes pour pouvoir le reproduire moi même et intégrer ses nouvelles syntaxes. Merci infiniment pour ce temps et ces explications. Frédéric. |
|
|
10
|
Copyright © 2000-2012 - www.developpez.com