获得对应于不同的行的值? (proc sql)

时间:2014-02-10 20:34:18

标签: sql sas proc-sql

我有5个变量唯一的数据集。第五个是标识符变量。最后,我有一个第6个变量,它取决于标识符变量。

标识符变量可以出现在多个位置。对于标识符变量的给定值,因变量永远不会改变。

我有以下代码:

proc sql;
select
...
, count(distinct identifier) as n_ids
from
group by

选择每组4个独立变量的唯一标识符数。我希望将第6个变量的总和加上这个,如下所示:

sum(case when distinct identifier then dependent_var else 0 end)

这显然不起作用(并且有充分理由)。在sql步骤中找到这个总和的任何干净方法?

1 个答案:

答案 0 :(得分:1)

最简单的解决方案可能是首先通过标识符汇总数据集:

proc sql;
select biggerstuff, identifier, max(depvar) 
from yourdataset
group by biggerstuff,identifier;
quit;

然后在较大的查询中将其插入'from'语句的位置(选择blah,count(identifier),sum(depvar))。一旦你在内部查询中对它进行了预先总结,你知道每个标识符只能获得1行,因此不再需要它。