比较几个日期相同的列不同的行

时间:2014-07-28 01:11:54

标签: mysql

我有一张看起来像这样的表。

+----+------+-----------+
| ID | NAME |   DATE    |
+----+------+-----------+
|  1 | A    | 1/1/2009  |
|  2 | A    | 1/2/2009  |
|  3 | A    | 1/5/2009  |
|  4 | B    | 2/2/2010  |
|  5 | B    | 2/10/2010 |
+----+------+-----------+

现在我需要编写一个显示以下结果的查询。

+----+------+-----------+-----------+
| ID | NAME |   DATE    | DIFF_DATE |
+----+------+-----------+-----------+
|  1 | A    | 1/1/2009  | 1         |
|  2 | A    | 1/2/2009  | 3         |
|  3 | A    | 1/5/2009  | NULL      |
|  4 | B    | 2/2/2010  | 8         |
|  5 | B    | 2/10/2010 | NULL      |
+----+------+-----------+-----------+

我正在尝试计算从最旧到最新的每个用户的日期之间的差异。 例如:名称:A DIFF_DATE:1/2/2009 - 1/1/2009 = 1 之后名称:A DIFF_DATE:1/5/2009 - 2009年1月2日= 3 等等。如果Date是用户的最大日期,它将显示NULL或0

知道如何创建这样的查询吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

SELECT A.*,DATEDIFF(TAB1.DATE1,A.`DATE`)
FROM TABLE A,(SELECT NAME, MAX(`DATE`) DATE1 FROM TABLE GROUP BY NAME) TAB1
WHERE A.NAME=TAB1.NAME;