我有一张桌子
Id值 1 A. 1 A. 1 B 2 @ 2 @ 2 @ 3 A. 3 A. 3 A. 3 A. 3 @ 4 B 4 B …
一种方法是计算数量 distinct 组中的值并将结果分配给 max(value) 当只有一个值时 @ 除此以外。
distinct
max(value)
@
proc sql; create table want as select id, case when count( distinct case when value ne '@' then value end ) = 1 then max(value) else '@' end as value from have group by id ;
我发现NULLIF包含在Fedsql Proc中,当我运行以下代码时,它工作正常。
proc fedsql; select id, case when min(NULLIF(values, '@')) = max(NULLIF(values, '@')) and min(NULLIF(values, '@')) ^= '@' then min(NULLIF(values, '@')) else '@' end as result from mytable group by id; run;