获取范围之间的MAX日期

时间:2014-09-25 01:59:02

标签: mysql sql

我正在寻找查询,但我无法找到帮助我或退出类似问题的答案。

我需要获取在两个日期之间上次购买的客户的信息

+--------+------------+------------+
| client | amt        | date       |
+--------+------------+------------+
|      1 |  2440.9100 | 2014-02-05 |
|      1 | 21640.4600 | 2014-03-11 |
|      2 |  6782.5000 | 2014-03-12 |
|      2 |  1324.6600 | 2014-05-28 |
+--------+------------+------------+

例如,如果我想知道最后一次购买的所有客户 2014-02-11和2014-03-16,在这种情况下,结果必须是

+--------+------------+------------+
| client | amt        | date       |
+--------+------------+------------+
|      1 | 21640.4600 | 2014-03-11 |
+--------+------------+------------+

不能成为客户2号因为2014-05-28有一个purchease, 我试着做一个

SELECT MAX(date) 
FROM table 
GROUP BY client

但是只获得所有日期的最大值, 我不知道是否存在可以提供帮助的功能或感谢,谢谢。


好吧,我不知道如何将这个问题标记为已解决,但这对我有用 完成原始查询

SELECT client, MAX(date) 
FROM table 
GROUP BY  client
HAVING MAX(date) BETWEEN date1 AND date2

感谢花了一分钟时间来解决我的问题, 特别感谢Ollie Jones和Peter Pei Guo

4 个答案:

答案 0 :(得分:2)

使用此格式的东西,将date1和date 2替换为实际值。

SELECT client, max(date) 
from table 
group by client
having max(date) between date1 AND date2

答案 1 :(得分:2)

有多种方法可以做到这一点。这是其中之一。

select * from 
(
select client, max(date) maxdate
from table
group by client ) temp
where maxdate between '2014-02-11' and '2014-03-06'

答案 2 :(得分:1)

这样您就可以获取适用行的金额列:

select t.*
  from tbl t
  join (select client, max(date) as last_date
          from tbl
         group by client
        having max(date) between date1 and date2) v
    on t.client = v.client
   and t.date = v.last_date

答案 3 :(得分:0)

我必须将字段“Date”更改为“TheDate”,因为date是保留字。我假设你使用的是SQL?我的表名是Table1。您需要对记录进行分组:

SELECT Table1.Client,Sum(Table1.Amt)AS SumOfAmt,Table1.TheDate 从表1 GROUP BY Table1.Client,Table1.TheDate HAVING((表1)日期#2/11/2014#和#3/16/2014#));

查询结果:

客户SumOfAmt TheDate

1 21640 03/11/14

2 6792 03/12/14

您可能想要获得MS Access的副本。您可以使用我用于生成此SQL的查询构建器生成SQL语句。当我在这里发帖时,我会先测试它,以确保它有效!我从来没有写过一行SQL代码,但是已经从MS Access中执行了数千行。

祝你好运,