SAS使用多个where子句作为不同的输出列多次选择相同的列

SAS Same column selection multiple times using multiple where clause as different output columns

我有一个正在创建的临时 table,我们会说第 1 列是 YearMonth,第 2 列是 user_id,第 3 列是 flag1,第 4 列是 flag。

YearMonth User_id   Flag1 Flag2
200101    1         N     N
200101    2         N     N
200101    3         Y     N

我想根据标志最小化 YearMonth。

例如当 flag1=N 然后为每个 userid 获取最少的 YearMonth,对于 flag2=N 则以相同的方式为每个 userid 获取最少的 YearMonth。 注意:此处,如果 Flag1 为 N,则 Flag2 将始终为 N,但 Flag2 的用户 ID 可能比 Flag1 多。

我是 SAS 新手,当我尝试使用如下 case 语句时:

   SELECT distinct t1.userid,
      case when t1.flag1='N' then MIN(t1.YearMonth) end as YearMonth1,
      case when t1.flag2='N' then MIN(t1.YearMonth) end as YearMonth2
   FROM WORK.table t1
   GROUP BY 1;

我想知道为什么它不会产生如下输出:

Userid YearMonth1 Yearmonth2
1      202001     202001
2      202001     202001
3                 202001        

我在这里错过了什么?谢谢

认为您只需要条件聚合。 CASE 表达式是 MIN():

的参数
SELECT t1.userid,
       MIN(CASE WHEN t1.flag1 = 'N' THEN t1.YearMonth END) end as YearMonth1,
       MIN(CASE WHEN t1.flag2 = 'N' THEN t1.YearMonth END) end as YearMonth2
FROM t1
GROUP BY t1.userid