我已经尝试在这里遵循一些指南,但我认为问题可能出在我的日期字段的格式上。
我有一个表,看起来像这样:
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是在什么时候第一次看到它的。
我的代码如下:
PROC SQL;
SELECT ID,
Creation_Date,
min(ACTION_DATE) as First_Action
FROM TABLE1
GROUP BY ID;
QUIT;根据一些指南,这看起来应该是可行的。但是,我得到的输出如下所示:
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类型。
发布于 2019-08-13 21:38:50
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只输出一条数据记录。
发布于 2019-08-13 21:27:19
用GROUP BY ID,Creation_Date替换GROUP by ID。
https://stackoverflow.com/questions/57478061
复制相似问题