SAS Enterprise:左连接和右连接的区别?

乔治

我加入了一家使用 SAS Enterprise Guide 的新公司。我有 2 个表,table A有 100 行,并且table B有超过 30M 行(50-60 列)。

我尝试从A(100) 到B(30M)进行正确连接,花了 2 个多小时,但没有结果。我想问一下,如果我做一个left join会有帮助吗?我使用了 GUI 并创建了以下查询。

30M 记录 <- 100 记录?

或者

100 条记录 -> 30M 条记录?

PROC SQL;
   CREATE TABLE WORK.QUERY_FOR_CASE_NUMBER AS 
   SELECT t2.EMPGRPCOM, 
          t2.SEQINVNUM, 
          t2.SBSID, 
          t2.SBSLASTNAME, 
          t2.SBSFIRSTNAME, 
          t2.PMTDUEDATE, 
          t2.PREMAMT, 
          t2.ITEMDESC, 
          t2.EFFDATE, 
          t2.PAYAMT, 
          t2.MCAIDRATECD, 
          t2.REBILLIND, 
          t2.BILLTYPE
      FROM WORK.'CASE NUMBER'n t1
           LEFT JOIN DW.BILLING t2 ON (t1.CaseNumber = t2.SBSID)
      WHERE t2.LOB = 'MD' AND t2.PMTDUEDATE BETWEEN '1Jan2015:0:0:0'dt AND '31Dec2017:0:0:0'dt AND t2.SITEID = '0001';
QUIT;

左连接和右连接,抛开所有其他事情,是等效的 - 如果你以相同的方式实现它们,无论如何。IE,

select a.* 
  from a
  left join
  b
  on a.id=b.id
 ;

对比

select a.*
  from b
  right join
  a
  on b.id=a.id
;

相同的精确查询,没有区别,使用相同的时间。SQL 是一种解释型语言,这意味着 SQL 解释器会查看您发送的内容并找出最好的方法 - 因此它可以查看两个查询并知道在两种情况下都执行相同的操作。

您可以在各种文章中阅读有关此内容的内容,是一个很好的起点,或者如果该链接已过期,只需搜索“右连接与左连接”即可。

现在,您可能要考虑以不同的方式编写它,即不使用 SQL;这种查询 SQL应该擅长,但有时出于某种原因不擅长。我会把它写成一个哈希表搜索,其中较小的 case_number 数据集被加载到内存中,然后数据步骤迭代较大的表并检查它是否在较小的数据集中找到 - 如果是,那么很好,返回它。

我还会考虑左/右连接是否是您想要的,与内部连接。在我看来,如果您只返回t2值,则右/左连接不正确(当 t1 是“主要”时):您只会得到不匹配的空行。要么返回一个t1变量,要么使用内连接。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SAS SQL连接条件

来自分类Dev

SAS 中的 SQL:尝试通过左连接计算零值

来自分类Dev

SAS Studio与SAS Enterprise之间的主要区别

来自分类Dev

SAS Studio与SAS Enterprise之间的主要区别

来自分类Dev

LINQ右连接和左连接

来自分类Dev

SAS和SQL之间的区别

来自分类Dev

SAS和INTNX格式

来自分类Dev

Azure SAS 和权限

来自分类Dev

没有凭证的SAS odbc连接

来自分类Dev

(SAS) 在连接期间删除重复项

来自分类Dev

SAS 连接 SQL Server 并返回参数

来自分类Dev

SAS 连接需要字符操作数

来自分类Dev

有连接的SAS Enterprise Guide自动化时间表?

来自分类Dev

SAS中的MISSING和NULL之间的区别

来自分类Dev

sas和+之间有区别吗?

来自分类Dev

左对齐SAS中的脚注

来自分类Dev

如何从 SAS 代码设置 SAS Enterprise Guide 首选项

来自分类Dev

Microsoft Azure和SAS for PHP

来自分类Dev

SAS删除总计和标题

来自分类Dev

SAS执行循环和宏

来自分类Dev

SAS中的格式和信息

来自分类Dev

是否可以在不使用sas / access工具的情况下将sas与Mysql连接

来自分类Dev

SAS 如何命名带有宏数字和字符串连接的文件?

来自分类Dev

右外连接到左外连接

来自分类Dev

中间SQL连接中的“左”和“右”表是什么?

来自分类Dev

中间SQL连接中的“左”和“右”表是什么?

来自分类Dev

sas-列表连接-最后一项例外

来自分类Dev

SAS IOM数据提供程序-访问被拒绝-SSIS连接

来自分类Dev

连接SAS中的宏变量以重命名列