246 from March a,Delay b
247 where a.flight=b.flight and a.date=b.date;
WARNING: 变量“flight”已经存在于文件 WORK.TMP1 中。
WARNING: 变量“date”已经存在于文件 WORK.TMP1 中。
WARNING: 变量“orig”已经存在于文件 WORK.TMP1 中。
WARNING: 变量“dest”已经存在于文件 WORK.TMP1 中。
WARNING: 语句由于 OUTOBS=10 选项而过早终止。
NOTE: 表 WORK.TMP1 创建完成,有 10 行,11 列。
1.4 prompt选项
这里prompt选项,可以让你选择是否还是按照原来的设置进行动作,或者继续操作。如下面的日志所以,如果直接选择停止,则得到1.2的结果,如果一直按继续,则得到如下结果:
255 proc sql inobs=10 prompt;
256 create table tmp3 as
257 select a.*,b.*
258 from March a,Delay b
259 where a.flight=b.flight and a.date=b.date;
WARNING: 变量“flight”已经存在于文件 WORK.TMP3 中。
WARNING: 变量“date”已经存在于文件 WORK.TMP3 中。
WARNING: 变量“orig”已经存在于文件 WORK.TMP3 中。
WARNING: 变量“dest”已经存在于文件 WORK.TMP3 中。
NOTE: 表 WORK.TMP3 创建完成,有 19 行,11 列。
1.5 number选项
procsql outobs=4 number;
select * from March;
quit;
1.6 reset选项
对上述SQL语句加上reset选项,使其不输出序号
procsql outobs=4 number;
reset nonumber;
select * from March;
quit;
2 DICTIONARY
2.1 DICTIONARY介绍
DICTIONARY可以得到很多SAS文件和会话等很多的元数据,包括SAS文件,外部文件,系统选项、宏、标题、脚注等。
DICTIONARY是在初始化时就创建,自动更新,并只允许读取操作,故不能修改。
下面列举一下SAS中DICTIONARY所包含的表:
SAS V8 DICTIONARY所包含的表:
CATALOGS:SAS目录的信息
COLUMNS:SAS变量和列的信息
EXTFILES:外部数据信息
INDEXES:参与索引的列的信息
MACROS:宏相关信息
MEMBERS:所有数据类型(表、视图、目录等)的信息
OPTIONS:当前会话选项
STYLES:ODS的样式信息
TABLES:表和数据集信息
TITLES:标题和脚注信息
VIEWS:视图信息
SAS V9 DICTIONARY所包含的新的表:
CHECK_CONSTRAINTS:CHECK约束信息
CONSTRAINT_COLUMN_USAGE:约束列使用信息
CONSTRAINT_TABLE_USAGE:约束表使用
DICTIONARIES:DICTIONARY所有表及其列
ENGINES:可用的引擎
FORMATS:可用的格式
GOPTIONS:SAS/GRAPH选项
LIBNAMES:LIBNAME信息
REFERENTIAL_CONSTRAINTS:相关约束
REMEMBER:已记录的信息
TABLE_CONSTRAINTS:表约束
2.2 查看2.1中各表内容
查看各表的结构,以查看dictionary.tables为例:
procsql;
describe table dictionary.tables;
quit;
这里可以从日志里看到表dictionary.tables的结构。
要查看这个表的数据,可以通过以下语句实现,这里我们只输出前10条数据
procsql outobs=10;
select * from dictionary.tables;
quit;
2.3 使用DICTIONARY的信息
查看SASHELP库里的文件信息:
procsql;
options nolabel nocenter;
select memname,nobs,nvar,crdate
from dictionary.tables
where libname='SASHELP';
quit;
注意,这里的库名都是大写。
查看SASHELP库里有列名为tabname的所有表:
procsql;
options nolabel nocenter;
select memname

