这应该是相当简单的,并提前感谢。我有一个唯一的ID列和一个用整数填充的起始列。我想创建一个填充了每个唯一ID的最小开始日期的新列。示例如下:
ID START
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
答案 0 :(得分:4)
SAS proc sql有一个称为重新合并的工具,允许您一步完成:
proc sql;
select id, start, min(start)
from t
group by id;
run;
SAS识别一个组,其中并非所有非聚合列都包含在group by
子句中。在这种情况下,它返回原始数据集中的每一行,聚合函数min(start)
根据id
聚合(因为它在group by
)子句中。
答案 1 :(得分:0)
在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
但根据戈登的回答,看起来SAS的方法更好。
答案 2 :(得分:0)
尝试这个
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
如果不是,请更新我
此致
Ashutosh Arya