我有类似表如下(当然有更多的行和字段):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