使用SQLAlchemy Core选择许多行中的第一行

时间:2019-02-12 09:51:03

标签: python sqlalchemy

我正在尝试从MSSQL数据库中提取特定的行。对于DistCodeRtrId的给定组合,我只想选择表中出现的第一行以及最新日期。该表有5列-DistCode(带7位输入),RtrId(带4位输入),X(带字符串),类(带字符串)和CreatedDate(带yyyy-mm-dd) )。抱歉,我的格式化很糟糕-第一次尝试这样做。

理想情况下,我希望仅从下表中选择第2行,因为它具有最新日期,并且碰巧是CreatedDate选项中的第一个。

DistCode    RtrId   X   Class   CreatedDate
1001885     5085    GT  BR      16-07-17

表数据如下:

DistCode    RtrId   X   Class   CreatedDate
1001885     5085    GT  BR  2016-03-05
1001885     5085    GT  BR  2016-07-17
1001885     5085    GT  OT  2016-07-17
1001885     5085    GT  BR  2016-05-05

dr1=select([dr.c.DistCode, dr.c.RtrId, dr.c.X, dr.c.Class, func.max(dr.c.CreatedDate).label('latest_Date')]).group_by(dr.c.DistCode, dr.c.RtrId, dr.c.X , dr.c.Class).distinct()

使用SQLAlchemy Core中的func.max,我可以筛选到第2行和第3行,但是如何进一步仅恢复第2行。请仅使用SqlAlchemy Core提供输入。

1 个答案:

答案 0 :(得分:0)

通过首先将sql数据库转换为pandas数据帧,然后使用groupby和first()方法来过滤数据,我发现了一种可能不太有效的方法。

我只希望SQL中有一个func.first()第一选项。

向所有帮助编辑我的问题的人以及那些试图在SQLAlchemy Core中破解它的人提供帮助。