Bonjour mon problème est un peu long à expliquer pour le profane que je suis...Je vais donc essayer de me lancer :
J'ai une table source (databrute) qui contient des données (id,annee,mois,jour,heure,montant,dateKey,operation) et une autre table destination (finalData) avec la même structure.
Ce que je voudrais faire, c'est la somme (montant) de source pour une heure donnée et stocker cette somme dans la colonne montant de la table destination... Je vous donne un exemple
TABLE SOURCE:
id;annee;mois;jour;heure;montant;dateKey;operation
1; 2010; 2; 23; 2; 1000; 2010022302; X
1; 2010; 2; 23; 2; 3000; 2010022302; X
1; 2010; 2; 23; 2; 7000; 2010022302; Y
1; 2010; 2; 23; 2; 3500; 2010022302; Y
TABLE DESTINATION (resultat attendu) :
id;annee;mois;jour;heure;montant;dateKey;operation
1; 2010; 2; 23; 2; 4000; 2010022302; X
1; 2010; 2; 23; 2; 10500; 2010022302; Y
cela me permettra de réduire considérablement le nombre de lignes quand on sait que par heure je peux avoir 3000 lignes pour une opération donnée!
j'ai moi même créé et rempli le champ datakey pour créer une clé unique me permettant de faire la jointure entre les deux tables pour la mise à jour.
je précise que la table destination est déjà pré-remplie avec toutes les dates et heures possibles de l'année, le champ montant à 0 par défaut et qu'il faut le mettre à jour avec la somme des montants des heures de source pour la même heure...
Quelqu'un peut-il m'aider pour la requête à effectuer ? Désolé de vous donner des minutes de lecture aussi longues....
voici ma requête qui ne marche pas:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 update finalData f, databrute d set montant = (select sum(montant) from databrute where d.annee=f.annee and d.mois=f.mois and d.jour=f.jour and d.heure=f.heure and f.operation=d.operation) where d.datekey=f.datekey
Partager