J'ai un besoin où je dois générer un rapport sur les projets logiciels en cours. Deux des colonnes sont la date du dernier jalon et la date du jalon précédent. De toute évidence, les jalons sont stockés dans une table de transaction afin que nous puissions avoir plusieurs jalons par projet.Sélection de transactions en une seule ligne
J'ai eu ici jusqu'à présent, mais maintenant je vais avoir des questions:
select proj.*
from zsof_projects proj
join zsof_milestones current_milestone on current_milestone.product_id = proj.id
join zsof_milestones last_milestone on last_milestone.product_id = proj.id
join (
select product_id, max(actual_date) maxDate
from zsof_milestones
group by product_id
) a on a.product_id = current_milestone.product_id and a.maxDate = current_milestone.actual_date
join (
select mile.product_id, max(actual_date) maxDate
from zsof_milestones mile
join (
select product_id, max(actual_date) maxDate
from zsof_milestones
group by product_id
) a on a.product_id = mile.product_id and mile.actual_date < a.maxDate
group by mile.product_id
) b on b.product_id = last_milestone.product_id and b.maxDate = last_milestone.actual_date
order by proj.id;
Le problème que j'ai est que tous les projets auront une dernière étape et tous les projets auront plus de un jalon. J'ai essayé les jointures à gauche mais ensuite je récupère plusieurs rangées par projet (ce que je dois éviter). J'utilise Oracle 10, donc s'il y a quelque chose que je peux utiliser en PL/SQL, je le prendrai aussi.
Merci! Cela fonctionne très bien. Je n'ai pas vu certaines des fonctions que vous avez utilisées ici, donc j'ai l'air d'avoir quelques lectures à faire. –