2

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

4

3 回答 3

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)子句中聚合。

于 2013-08-05T13:29:31.300 回答
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

如果没有,请更新我

问候

阿舒托什·艾莉亚

于 2013-08-05T13:27:06.253 回答
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

但根据 Gordon 的回答,SAS 似乎有更好的方法。

于 2013-08-05T13:24:24.370 回答