2017-10-13 106 views
1

我連接使用轉換YYYYMMDD日期格式和計算行業平均按日期

proc sql; 
connect to odbc as odbc("......"); 
create table work.market as select distinct * from connection to odbc( 
select distinct C.Product#, A.county, B.DT, profit2, Rev2) 

From Mtable.duv A, Ttable.duv B, otable C 
Where B.Product# = C.Product# 
and B.Product# = A.Product# 

and B.Dt = C.Dt 
and B.dt between A.dt_start and dt_end 
and B.dt between 20140331 and 20170630 
); 
disconnect from odbc; 
quit; 

data work.smallmarket; 
set work.market; 
where country=Nigeria; 
NetMargin=profit2/Rev2; 
keep Product# NetMargin DT; 
run; 

1)如果DT是我的日期,我該如何改變從YYYYMMDD日期格式像01Jan1960一個SAS日期格式?當我運行上面的代碼時,我得到了我的數據,但日期以20170630爲例。我如何轉換日期列以30Jun2017格式顯示。我發佈了我的初始數據集「work.market」,以防萬一這是問題的一部分。抱歉不能發佈日誌。你能幫忙嗎?

+2

請包括來自該代碼的日誌,它看起來不正確。顯示的代碼也與您的問題無關。你可以發佈你試過的與你的問題相關的內容,以及你的數據是什麼樣的? – Reeza

+0

第一個問題很好,我認爲你擁有它的方式。第二,你需要單獨詢問,因爲Reeza指出你需要展示你的嘗試。 – Joe

回答

0

如果你想轉換成SAS日期格式,你有兩個地方可以做到這一點。

首先,您可以在create table聲明中執行此操作;這是一條SAS語句,而不是SQL Server /任何語句。

proc sql; 
connect to odbc as odbc("......"); 
create table work.market as select Product#, county, dt format=date9.,profit2, rev2 
    from connection to odbc( 
select distinct Product#, county, DT, profit2, Rev2); 

你可以做的第二個地方是在下面的數據步驟。

data work.smallmarket; 
set work.market; 
where country=Nigeria; 
format dt date9.; 
NetMargin=profit2/Rev2; 
keep Product# NetMargin DT; 
run;