这应该相当简单,并提前感谢。我有一个唯一的 ID 列和一个用整数填充的起始列。我想创建一个新列,其中填充了每个唯一 ID 的最短开始日期。示例如下:
标识开始
1 23
1 24
1 34
2 12
2 11
我想要什么
ID START minStart
1 23 23
1 24 23
1 34 23
2 12 11
2 11 11
SAS proc sql 有一个称为重新合并的工具,可让您一步完成:
proc sql;
select id, start, min(start)
from t
group by id;
run;
SAS 通过并非所有非聚合列都包含在group by
子句中来识别组。在这种情况下,它返回原始数据集中的每一行,聚合函数min(start)
根据id
(因为它在group by
)子句中聚合。
尝试这个
SELECT A.ID,A.START,B.START FROM TABLE_NAME A
INNER JOIN
(
SELECT ID ,MIN(START) START FROM TABLE_NAME
GROUP BY ID
)B
ON A.ID=B.ID
如果没有,请更新我
问候
阿舒托什·艾莉亚
在 T-SQL 中可以这样做:
SELECT a.ID, a.START, b.MinStart
FROM Table AS a
JOIN (SELECT ID, MIN(START)'MinStart'
FROM Table
GROUP BY ID
)AS b
ON a.ID = b.ID
但根据 Gordon 的回答,SAS 似乎有更好的方法。