t'ain
vous avez une base aussi pourrie sous DB2 ?
bon, trouve un moyen d'ajouter un champ dans T2, histoire de savoir dans quel order chronologique au moins lire les lignes. si possible, en trimestres, puisque j'imagine que c'est de résultats trimestrials qu'il s'agit (sinon d'aurait plus de 3 colonnes)
sans ça, ça reste possible, mais tu va devoir partir sur des suppositions pourries, genre :
Citation :
en fait, si c'est bien un CA, c'est donc forcément plus grand au fur et à mesure des publications.
donc j'ai mon ordre chronologique.
|
mais avec seulement l'ordre chronologique, tu va te lancer dans une requête de 50 lignes qui va mettre à genoux le serveur (même si c'est du DB2) pendant deux heures pour sortir 3 lignes (à vue de nez 3 niveaux d'imbrications de sous-requêtes, super redondantes, et avec des morceaux de grumeaux dedans genre des regroupements, des >... et j'imagine qu'une société peut ne pas publier de résultat partiel, ou n'en produire qu'un seul à mi-exercice... donc en plus ça va être en jointures externes... alors le plus fun c'est que tu sauras pas dire si ca1 a été publié au mois de mars ou au mois de septembre !)
en fait, voilà le principe :
ca1 veut dire que ca1 = min(t2.ca) where c'est la bonne année et la bonne soc.
mais pour ca2 ça se corse, parceque ça va être min(t2.ca) where c'est la bonne année et la bonne soc, mais où t2.ca > min(t2.ca) where c'était bon...
et pour ca3, encore une couche !
le plus fun, c'est que pour chaque, en plus ça correspond à une jointure supplémentaire : tu dois joindre 3 fois t2 à t1 pour faire tes 3 colonnes.
alors que si t'as une notion de trimestre dans ta table...
Code :
- select t1.idsoc, t1.annee, t1.ca, t21.ca ca1, t22.ca ca2, t23.ca ca3
- from t1
- left outer join t2 t21 on t21.idsoc = t1.idsoc and t21.annee = t1.annee and t21.trimestre = 1
- left outer join t2 t22 on t22.idsoc = t1.idsoc and t22.annee = t1.annee and t21.trimestre = 2
- left outer join t2 t23 on t23.idsoc = t1.idsoc and t23.annee = t1.annee and t21.trimestre = 3
|
Avec des outer join histoire d'avoir des valeurs à NULL si un CA partiel n'a pas été publié
Bref, ajoute une colonne trimestre.