如何解决SAS使用多个where子句作为不同的输出列多次进行同一列选择
我有一个正在创建的临时表,我们说第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时,则为每个用户标识获取最少的YearMonth;对于flag2 = N,则以相同方式,为每个用户标识获取最少的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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。