SAS:PROC SQL和ANSI标准

文章来源于SAS HELP

  • PROC SQL 和ANSI SQL 的区别——图表和视图名称的作用域规则不同
    例1:匹配数据集相关名称
    当PROC SQL匹配数据集相关名称时,会依次进行3个步骤:1、有别名,用别名匹配;2、1匹配失败,在无别名的数据集中用数据集名匹配;3、2匹配失败,用有别名的数据集名匹配。
proc sql noprint;
	create table test as
	select dm.subjid,1 as lmg length = 8
	from dm as dm,
		 ae as ae
	where dm.subjid = ae.subjid
	and	  dm.sex = 'M'
	and   not exists (select *
					  from dm as d
					  where d.subjid = dm.subjid
					  and   strip(d.sex) <> 'F'
					  );
quit;

在not exist条件中,proc sql先用别名d去匹配(where筛选等号左边的条件),匹配成功;where筛选等号右边的条件dm.subjid属于有别名d,用dm匹配(属于前2个步骤都没有匹配到,用第3个步骤才成功匹配),也就等价于

where d.subjid = d.subjid
and   strip(d.sex) <> 'F'

继而等价于

where strip(d.sex) <> 'F'

注意:如果PROC SQL使用ISO/ANSI SQL:相关名称匹配标准2012,那么where等式右边的dm.subjid就可以用高等级select语句匹配,即从not exist内部查询语句中跳出到外部select语句中进行匹配

为了与ISO/ANSI SQL匹配规则一致,可以修改相应查询语句。比如在例1中确保外部作用域和内部作用域有不同的别名。

proc sql noprint;
	create table test as
	select dm.subjid,1 as lmg length = 8
	from dm as d1,
		 ae as ae
	where d1.subjid = ae.subjid
	and	  dm.sex = 'M'
	and   not exists (select *
					  from dm as d2
					  where d2.subjid = d1.subjid
					  and   strip(d2.sex) <> 'F'
					  );
quit;

例2:模糊引用
在相同的作用域内有两个相同的dm的引用,DBMS与ANSI SQL标准完全一致,因此会检测到dm.xxx模棱两可。但是对于PROC SQL来说却不会觉得模糊,因为按照例1的逻辑,会首先对有别的的数据集进行匹配,所以这里的where条件实际上筛选到的是来自ae数据集中筛选号长度大于3的筛选号。

proc sql noprint;
	create table test as
	select dm.subjid
	from   dm,ae as dm
	where dm.length(subjid)>3;	
quit;

拓展:PROC SQL exists子查询
在这里插入图片描述

相关推荐

  1. Python基础_any()all()

    2024-06-13 13:26:02       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-13 13:26:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-13 13:26:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-13 13:26:02       87 阅读
  4. Python语言-面向对象

    2024-06-13 13:26:02       96 阅读

热门阅读

  1. 鸿蒙arkts加载组件图片旋转示例

    2024-06-13 13:26:02       33 阅读
  2. 后端Long类型参数前端接受精度丢失解决方案

    2024-06-13 13:26:02       39 阅读
  3. C++中的状态模式

    2024-06-13 13:26:02       29 阅读
  4. C调用C++中的类

    2024-06-13 13:26:02       36 阅读
  5. 【文献阅读】基于高阶矩的波形分类方法

    2024-06-13 13:26:02       37 阅读
  6. Spring MVC的控制器是不是单例模式

    2024-06-13 13:26:02       34 阅读
  7. HTML下雪/烟花

    2024-06-13 13:26:02       27 阅读
  8. 关于windows脚本的一些东西

    2024-06-13 13:26:02       35 阅读
  9. Python有哪些经典的常用库?

    2024-06-13 13:26:02       35 阅读
  10. 聊聊JetCacheProxyConfiguration

    2024-06-13 13:26:02       31 阅读
  11. 测试面试点

    2024-06-13 13:26:02       38 阅读
  12. 【星海随笔】ELK优化

    2024-06-13 13:26:02       38 阅读
  13. [EFI]NUC11电脑 Hackintosh 黑苹果efi引导文件

    2024-06-13 13:26:02       78 阅读
  14. 13. FastLED 示例3则

    2024-06-13 13:26:02       72 阅读
  15. gitlab下载及安装

    2024-06-13 13:26:02       34 阅读