I ont un tableau similaire à ce qui suit (bien sûr avec plus de lignes et champs):MySQL Combiner plusieurs lignes
category_id | client_id | date | step
1 1 2009-12-15 first_step
1 1 2010-02-03 last_step
1 2 2009-04-05 first_step
1 2 2009-08-07 last_step
2 3 2009-11-22 first_step
3 4 2009-11-14 first_step
3 4 2010-05-09 last_step
Je voudrais transformer ce que je puisse calculer le temps entre le premier et le dernier étapes et finissent par trouver le temps moyen entre la première et la dernière étapes, etc. en fait, je suis perplexe sur la façon de transformer le tableau ci-dessus en quelque chose comme:
category_id | first_date | last_date
1 2009-12-15 2010-02-03
1 2009-04-05 2009-08-07
2 2009-11-22 NULL
3 2009-11-14 2010-05-09
Toute aide serait appréciée.
Avec OMG Poneys aide, voici la solution:
SELECT t.category_id,
MIN(t.date) AS first_date,
CASE
WHEN COUNT(*) >= 2 THEN MAX(t.date)
ELSE NULL
END AS last_date
FROM TABLE t
GROUP BY t.category_id, t.client_id
J'ai peut-être trop simplifié mon exemple, alors je l'ai changé. Il y a beaucoup d'entrées par catégorie. – Mitchell
Ok, tant que je change la clause GROUP BY à: GROUP BY t.category_id, t.client_id cela fonctionne. – Mitchell
@Mitchell: Mise à jour, merci de mettre à jour les résultats attendus. –