我们正在将代码转换到SAS网格,我们使用Enterprise Guide 6.1运行SAS 9.4。一块代码给出的结果与我们在PC上运行SAS 9.3时得到的结果不同。我创建了一个示例数据集和代码,它返回不同的结果。在网格上运行的结果(包含13个重复行)是在select语句中包含列时的预期行为,但不会将其聚合或在组中使用它。使用SAS 9.3(6个不同的行)运行它的结果是我们想要的,但不是典型的SAS行为。我已经修改了代码(通过添加denom)以在网格上获得所需的结果,但想知道为什么代码在不同的环境中运行时返回不同的结果。有任何想法吗?Proc SQL在SAS网格和SAS 9.3上使用SAS 9.4提供不同结果
ETA:网格使用SAS 9.4,修改后的代码使用组中的denom。另外,我无法找到Proc SQL从V 9.3到V 9.4的更改文档。
proc sql;
create table work.test
(state char(2)
,county char(20)
,city char(20)
,id char(6));
quit;
proc sql;
insert into work.test (state, county, city, id)
values ('OH', 'Hamilton', 'Cincinnati', 'abc')
values ('OH', 'Hamilton', 'Cincinnati', 'def')
values ('OH', 'Hamilton', 'Cincinnati', 'ghi')
values ('OH', 'Hamilton', 'Mariemont', 'jkl')
values ('OH', 'Hamilton', 'Mariemont', 'mno')
values ('OH', 'Franklin', 'Columbus', 'pqr')
values ('OH', 'Franklin', 'Columbus', 'stu')
values ('TX', 'San Patricio', 'Ingleside', 'abc')
values ('TX', 'San Patricio', 'Taft', 'abc')
values ('TX', 'Nueces', 'Corpus Christi', 'abc')
values ('TX', 'Nueces', 'Corpus Christi', 'xyz')
values ('TX', 'Nueces', 'Corpus Christi', 'tuv')
values ('TX', 'Nueces', 'Corpus Christi', 'def');
quit;
proc sql;
create table freqs as
select a.state
, a.county
, a.city
, count(city) as numer
, denom
, round(count(city)/denom*100,.1) as percent
from work.test as a,
(select state, county, count(*) as denom from work.test group by state, county) as b
where a.state=b.state and a.county=b.county
group by a.state, a.county, a.city;
quit;
提高SAS支持的票证。 – Tom
请参阅编辑我的答案。看起来像一个已知的问题已经在9.3 Hot Fix中修复:http://support.sas.com/kb/46/832.html – DomPazz
请注意,SAS 9.2与SAS 9.3的功能相同。 SAS 9.4已经失去了DENOM在STATE,CITY层面的知识,因此不需要重新组合。 – Tom