在 where 语句中使用多个条件

1 sql sas where

我试图确定出现在所有 3 个“触摸”中并打开(打开 = 1)所有 3 封电子邮件的人数(基于 ID)。我正在使用下面的代码,但它返回一个我认为不正确的值 0。所以,我不确定我是否在数据中正确地表示了这一点。

proc sql;
    select count (ID) 
    from TableX 
    where (Touch='Touch1' and Open=1) and (Touch='Touch2' and Open=1) and (Touch='Touch3' and Open=1);
    quit;
Run Code Online (Sandbox Code Playgroud)

谢谢!

Gor*_*off 5

您可以使用以下方法识别人员:

proc sql;
    select id
    from TableX 
    where Open = 1 and Touch in ('Touch1', 'Touch2', 'Touch3')
    group by id
    having count(distinct Touch) = 3;
    quit;
Run Code Online (Sandbox Code Playgroud)

要计算它们,请使用子查询:

proc sql;
    select count(*)
    from (select id
          from TableX 
          where Open = 1 and Touch in ('Touch1', 'Touch2', 'Touch3')
          group by id
          having count(distinct Touch) = 3
         ) x
    quit;
Run Code Online (Sandbox Code Playgroud)