我有一张看起来像这样的表。
+----+------+-----------+
| 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
知道如何创建这样的查询吗?
提前致谢!
答案 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;