我們正在將代碼轉換到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