3 回答

TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個(gè)贊
SELECT group,MAX(date) as max_date
FROM table
WHERE checks>0
GROUP BY group
這可以獲取最大日期..將其返回到您的數(shù)據(jù)以獲取其他列:
Select group,max_date,checks
from table t
inner join
(SELECT group,MAX(date) as max_date
FROM table
WHERE checks>0
GROUP BY group)a
on a.group = t.group and a.max_date = date
內(nèi)部聯(lián)接用作僅獲取最大記錄的過濾器。
僅供參考,您的列名很恐怖,請不要在列(組,日期,表)中使用保留字。

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個(gè)贊
您可以像這樣使用窗口 MAX():
SELECT
*,
max_date = MAX(date) OVER (PARTITION BY group)
FROM table
獲取每個(gè)日期group以及其他數(shù)據(jù)的最大日期:
group date cash checks max_date
----- -------- ---- ------ --------
1 1/1/2013 0 0 1/3/2013
2 1/1/2013 0 800 1/1/2013
1 1/3/2013 0 700 1/3/2013
3 1/1/2013 0 600 1/5/2013
1 1/2/2013 0 400 1/3/2013
3 1/5/2013 0 200 1/5/2013
使用上面的輸出作為派生表,然后您只能獲得date匹配的行max_date:
SELECT
group,
date,
checks
FROM (
SELECT
*,
max_date = MAX(date) OVER (PARTITION BY group)
FROM table
) AS s
WHERE date = max_date
;
獲得理想的結(jié)果。
基本上,這與@Twelfth的建議類似,但是避免了加入,因此可能更有效。
您可以在SQL Fiddle中嘗試該方法。
- 3 回答
- 0 關(guān)注
- 778 瀏覽
添加回答
舉報(bào)