发布网友
共1个回答
热心网友
你代码搞得那么乱,当然看不懂了,真是的!
**********************************************************************************************************************
1 PROC SQL;
2 CONNECT TO oracle AS conname;
3 CEREAT TABLE temp AS SELECT * FROM CONNECTION TO conname
4 (
5 SELECT
6 bizdate, a.code,a.name,close_price, bizdate2, close_price2,
7 close_price/close_price2-1 AS r,
8 to_date(bizdate,'yyyy-mm-dd')-to_date(bizdate2,'yyyy-mm-dd') AS interval
9 FROM
_________________________________________________________
10 ( SELECT bizdate, code,name,close_price
11 FROM pf_all_quotation
12 WHERE
13 typecode = 'S' AND code IN('81699', '00030', '39992', '81602', '00001', 'h1100',
'h1100','h1100', 'h1100','00093', 'h1100', 'h1100', '81602', '00090', '00090') AND
bizdate = &date_str
14 ) a
15 LEFT JOIN
16 (
17 SELECT bizdate AS bizdate2,code,name,close_price AS close_price2
18 FROM pf_all_quotation
19 WHERE typecode = 'S' AND code IN('81699', '00030', '39992', '81602', '00001',
20 'h1100', 'h1100', 'h1101', 'h1100','00093', 'h1100', 'h1100', '81602', '00090', '
21 00090')
22 AND bizdate = 20121231
23 ) b
24 ON a.code=b.code
___________________________________________________
25 );
26 DISCONNECT FROM conname;
27 QUIT;
*******************************************************************************************************************
注释:这段代码的作用是利用SAS的“PROC SQL”从Oracle数据库中的数据集 “pf_all_quotation” 中抽取满足要求的数据项形成一个新的表“temp”,该过程中用到了两个临时表a和b,temp就是由a、b两个表通过“左连接” ( LEFT JOIN)生成的.这段代码的结构其实很简单,如果说看不懂,那估计就是你被10-14行的嵌套的SELECT语句给迷惑了吧,另外你的代码也太乱了,那能容易看懂?理解这段代码你要先回顾以下几个知识点。
第2行:SAS与Oracle要首先建立一个“连接”,这个“连接”的名字叫"conname"
第3行:表明通过conname来形成表temp
第7、8行:AS起重命名的作用,前者把除法运算的结果命为r,后者把日期相减的结果命为interval
第10-14行:表a是通过SELECT...FROM...语句形成的,b同理
第13行:WHERE后面的是条件*语句.IN表明code须是括号中的某一项.
第15行:左连接.解释起来很啰嗦,直接给你看个例子。
代码不是很难,就是需要点耐心。这下懂了吧?