我的桌子看起来像这样:
group date cash checks 1 1/1/2013 0 0 2 1/1/2013 0 800 1 1/3/2013 0 700 3 1/1/2013 0 600 1 1/2/2013 0 400 3 1/5/2013 0 200
– 不需要现金只是表明该表有更多的信息
我想要获取每个唯一的组,其中date是max,而check大于0.因此返回结果如下所示:
group date checks 2 1/1/2013 800 1 1/3/2013 700 3 1/5/2013 200
尝试代码:
SELECT group,MAX(date),checks FROM table WHERE checks>0 GROUP BY group ORDER BY group DESC
问题是,它给我所有的日期和检查,而不是最大日期行。
使用ms sql server 2005
解决方法
SELECT group,MAX(date) as max_date FROM table WHERE checks>0 GROUP BY group
这样做可以获得最大的日期。将它加入到数据中以获取其他列:
Select group,max_date,check 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
FYI,您的列名可怕,请勿对列(组,日期,表)使用保留字。