SQL从所有组中获取最小日期

时间:2018-08-16 03:20:09

标签: sql postgresql

我有一个具有以下结构的表:

Column A: text
Column B: datetime
Column C: text

Column A具有三个可能的值: ADD,DELETE和OTH

我要做的是按Column C对记录进行分组,并获得最小日期时间 IF Column A ADD或OTH

例如,如果表是

A         B          C
DELETE    2013-Jul   ABC
ADD       2014-Jul   DEF
OTH       2015-Jul   ABC
OTH       2016-Jul   DEF
ADD       2017-Jul   ABC

我想得到类似的东西

Group      Min_Date    Type
ABC        2015-Jul    OTH
DEF        2014-Jul    ADD

是否可以通过GROUP或PARTITION来做到? 任何提示都欢迎!

1 个答案:

答案 0 :(得分:1)

使用聚合函数

select C,min(B) as Min_Date from tabl1
where A in ('OTH','ADD')
group by C

由于OP是最近更改的输出,因此请在下面的查询中使用

select distinct * from t where B in ( select min(B) from t t1 
                            where t1.C=t.c
                           and  t1.A in ('OTH','ADD')
                                    )

http://sqlfiddle.com/#!15/57770/15

a     b          c
ADD 2014-07-01  DEF
OTH 2015-07-01  ABC