Proc SQL 选择不同的 SAS

问题描述 投票:0回答:1

我有一个数据集,

Have
,看起来像这样:-

ID    Group  Label_T
1763    A     Y
1763    A     M
6372    B     M

我想通过不同的 ID 将此数据集连接到另一个数据集,并有一个基于变量 Group 的条件,如下所示:-

proc sql;
create table want as 
  select a.ID
  a.Qty
  (case when b.Group = 'A' then 'Right'
        when b.Group = 'B' then 'Left' end) as Category
 from work.test a
   left join (select distinct ID from work.have) b
        on a.ID=b.ID
;
quit;

我希望数据集看起来像这样:-

ID      Qty   Category
1763     28     Right
6372     30     Left
3908     41     <blank>

对于不在“有”数据集中的 ID,将“类别”列留空。当我运行此命令时,我不断收到错误:“在用相关名称 b 标识的表/视图中找不到列组。” Group 列不在 work.test 数据集中。我想我可能必须使用 ID 而不是 Group 的条件,但我是否需要条件条件的附加数据集然后加入?

sql sas left-join proc-sql
1个回答
0
投票

如果

Group
中没有
work.test
列,那么您应该在子查询中使用该列。效果会很好

proc sql;
create table want as 
  select a.ID
  a.Qty
  (case when b.Group = 'A' then 'Right'
        when b.Group = 'B' then 'Left' end) as Category
 from work.test a
   left join (select distinct ID, Group from work.have) b
        on a.ID=b.ID
;
quit;
© www.soinside.com 2019 - 2024. All rights reserved.