每个唯一ID的最小值

时间:2013-08-05 13:20:26

标签: sql sas proc-sql

这应该是相当简单的,并提前感谢。我有一个唯一的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

3 个答案:

答案 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