我有類似表如下(當然有更多的行和字段):MySQL的合併多個行
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
我想改變這個,這樣我可以計算第一和最後的時間步驟,並最終找到最初和最後步驟等之間的平均時間基本上,我在如何上表轉變爲像很爲難:
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
任何幫助,將不勝感激。
隨着OMG小馬的幫助下,這裏的解決方案:
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
我可能已經簡化了我的例子,所以我改變了它。每個類別都有很多條目。 – Mitchell 2010-07-27 16:08:06
好的,只要我將GROUP BY子句更改爲:GROUP BY t.category_id,t.client_id就可以工作。 – Mitchell 2010-07-27 16:27:53
@Mitchell:更新,thx更新預期結果。 – 2010-07-27 16:31:12