首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PROC-SQL -仅返回日期值最小的行

PROC-SQL -仅返回日期值最小的行
EN

Stack Overflow用户
提问于 2019-08-13 20:48:05
回答 2查看 470关注 0票数 0

我已经尝试在这里遵循一些指南,但我认为问题可能出在我的日期字段的格式上。

我有一个表,看起来像这样:

代码语言:javascript
复制
ID    Creation_Date       Action_date
1     01JAN19:00:06:33    01JAN19:09:00:00  
2     04JAN19:11:31:34    04JAN19:09:00:00
2     04JAN19:11:31:34    05JAN19:09:00:00
2     04JAN19:11:31:34    06JAN19:09:00:00
3     21JAN19:09:17:01    22JAN19:09:00:00
3     21JAN19:09:17:01    23JAN19:09:00:00

我想返回所有唯一的ID,并且只返回最新的Action_Date,以查看ID是在什么时候第一次看到它的。

我的代码如下:

代码语言:javascript
复制
PROC SQL;
SELECT ID,
       Creation_Date,
       min(ACTION_DATE) as First_Action
FROM TABLE1
GROUP BY ID;
QUIT;

根据一些指南,这看起来应该是可行的。但是,我得到的输出如下所示:

代码语言:javascript
复制
ID    Creation_Date       FIRST_ACTION
1     01JAN19:00:06:33    1830851902 
2     04JAN19:11:31:34    1830853260
2     04JAN19:11:31:34    1830853260
2     04JAN19:11:31:34    1830853260
3     21JAN19:09:17:01    1830854958
3     21JAN19:09:17:01    1830854958

因此,我怀疑这是我的查询读取日期格式的问题。有人能帮上忙吗?我是SAS/PROC-SQL的新手,以前没有处理过date类型。

EN

回答 2

Stack Overflow用户

发布于 2019-08-13 21:38:50

代码语言:javascript
复制
SELECT ID,
       Creation_Date,
       min(ACTION_DATE) as First_Action
FROM TABLE1 main
WHERE
NOT EXISTS(
    SELECT *
    FROM TABLE1 sub
    WHERE sub.Action_Date < main.Action_Date
    AND sub.ID = main.ID
)
QUIT;

它搜索不存在较低Action_Date的数据记录。这是最低的日期。这也应该对ID进行分组,因此每个ID只输出一条数据记录。

票数 1
EN

Stack Overflow用户

发布于 2019-08-13 21:27:19

用GROUP BY ID,Creation_Date替换GROUP by ID。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57478061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档