【发布时间】:2021-11-07 02:32:22
【问题描述】:
我遇到一个问题,即某些使用 PROC SQL 的 SAS 代码无法正常工作,因为我的一个计算中有一个 case 语句。
代码如下所示:
PROC SQL;
create table example as
select
a.var1,
a.var2,
a.var3,
case when a.NumericVariable is not missing then
Max(0,Sum(Sum(a.Var4), -Sum(a.Var5)))) end as Calculation
from table1 a inner join table2 b
on a.primarykey=b.primarykey
group by var1,var2,var3;
quit;
此代码返回表 A 中行数的重复行。 删除case语句如下:
PROC SQL;
create table example as
select
a.var1,
a.var2,
a.var3,
Max(0,Sum(Sum(a.Var4), -Sum(a.Var5)))) as Calculation
from table1 a inner join table2 b
on a.primarykey=b.primarykey
group by var1,var2,var3;
quit;
这只是使用 var1、var2 和 var3 的级别返回组。
如何调整上面的代码以去除重复?
【问题讨论】:
-
我认为你遗漏了一些重要的东西——
calculation是什么。我试图在我的回答中解决这个问题,但如果它包含一个例子,你的问题会更好。特别是您可能正在使用sum或其他既是汇总函数又是行级函数的函数,这会导致您的一些问题。 -
我同意,如果任何变量被格式化并且您期望 SQL 支持格式,那么计算字段中的确切内容可能也很重要。这通常也是 SQL 中的一个大问题。