2014-09-25 126 views
2

我在搜索querys,但我無法找到一個答案,幫助我或退出類似的問題。獲取最大日期範圍

我需要得到,如果我想知道所有誰使 2014年2月11日的最後一次購買的卡斯特兩個日期

+--------+------------+------------+ 
| 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年3月16日,在這種情況下,其結果必然是

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

不能是客戶數2的原因有purchease於2014年5月28日, 我儘量讓

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

回答

2

這種格式的東西,用實際值替換date1和date2。

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

@TheVedge,你是對的! – 2014-09-25 02:09:18

+0

謝謝,但如果我這樣做,會出現客戶端號碼2原因2014-03-12有一個日期,它不能出現在2014年5月28日原因有另一個purhcease,我需要知道誰擁有自己的客戶最後一次購買的範圍內,如果有一個purhcease超出範圍一定不能顯示,我想不是那麼簡單 – user3680275 2014-09-25 02:10:42

+0

@ user3680275你試過了嗎?此查詢不應返回客戶2,因爲它僅在max(日期)上進行過濾。任何在此之前完成的購買都不會被考慮。 – ESG 2014-09-25 02:13:02

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 
+0

謝謝我嘗試這個,並幫助我很多 – user3680275 2014-09-25 02:35:14

2

還有就是要做到這一點的方法不止一種。這是其中之一。

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

由於日期是保留字,我不得不將字段「Date」更改爲「TheDate」。我假設你正在使用SQL?我的表名是Table1。你需要組記錄:

SELECT Table1.Client,SUM(Table1.Amt)AS SumOfAmt,Table1.TheDate FROM表1 GROUP BY Table1.Client,Table1.TheDate 具有:(((Table1.TheDate)之間#2/11/2014#和#3/16/2014#));

查詢結果:

客戶SumOfAmt TheDate

1 21640 14年3月11日

2 6792 14年3月12日

您可能希望讓自己MS副本訪問。您可以使用我用來生成此SQL的查詢生成器來生成SQL語句。當我在這裏發佈帖子時,我會經常先測試它,確保它能夠正常工作!我從來沒有寫過一行SQL代碼,但已經從MS Access中執行了數千行代碼。

祝你好運,