sql - 在 Hive 中带有子查询 IN/EXIST 的左外连接
问题描述
全部,所以我正在尝试运行查询。该查询由 7 个表组成,我希望所有表都基于 A.conn_keyy 和其他带有子句“ON”的表保持连接
当我想加入基于 A 的 CPLCUR 时,我感到困惑,但不起作用。
(CPLCUR.conn_keyy in ( a.conn_keyy = b.conn_keyy )
出现错误:join 'conn_key' 中遇到左右别名
set hive.support.quoted.identifiers=none;
select
coalesce(a.conn_keyy, b.conn_keyy,CPLCUR.conn_keyy) as rrconn_keyy,
b.rfbbn, b.LINES_ID,b.TYPE,CPLCUR.*
FROM
(tablee.aa)A
LEFT OUTER JOIN
(tablee.bb) B
ON (A.conn_keyy = B.conn_keyy)
LEFT OUTER JOIN (SELECT `(c21)?+.+` FROM tablee.cc ) CPLCUR
ON (CPLCUR.conn_keyy in ( a.conn_keyy = b.conn_keyy )
AND CPLCUR.cllt = REGEXP_EXTRACT(B.rfbbn,'^(?:[^*]*\\*){2}([^*]*)',1))
LEFT OUTER JOIN (SELECT DISTINCT * FROM tablee.dd) CPLBAL
ON CPLBAL.conn_keyy = A.conn_keyy
AND CPLBAL.SEQUENCE = CPLCUR.SEQUENCE
AND CPLBAL.dtdt = '1999'
LEFT OUTER JOIN
(tablee.REP)REP
ON REP.relino = B.lnido
LEFT OUTER JOIN tablee.P PRD
ON PRD.PRODUCT_CODE = REGEXP_EXTRACT(A.conn_keyy,'[.]([^.]+)',1)
AND PRD.dtdt = '1999'
WHERE B.lnido LIKE 'PLCONS1%'
) rrvv;
得到这个的最佳做法是什么?
The desired results:
+-----------+---------+--------+----------+-------------+-------+-----+-----+
| conn_keyy | b.rfbbn | b.LINES| b.TYPE | CPLCUR | CPLBAL| REP | PRD |
+-----------+---------+--------+----------+-------------+-------+-----+-----+
| 111 | aaa | PCOS1% | bbsr | 2019-02-21 | | | |
| 200 | | PCOS1% | ny | X | | | |
| 222 | bbb | PCOS1% | pp | Y | | | |
| 300 | rrr | PCOS1% | atl | 2019-03-18 | | | |
| 333 | ccc | PCOS1% | dd | Z | | | |
| 400 | vvv | PCOS1% | tt | 2019-03-18 | | | |
+-----------+---------+--------+----------+-------------+-------+-----+-----+
解决方案
推荐阅读
- ios - 等待期待但继续
- node.js - 使用 multer 上传图像文件时请求实体太大
- rest - 如何解决找不到媒体类型 = 多部分/表单数据的 MessageBodyWriter
- pyspark-sql - java.lang.ClassCastException:java.util.ArrayList 无法在 pyspark 中转换为 java.lang.String
- sql - 如何在SAS数据集中同时选择一个字段的第一次出现和另一个字段的最后一次出现?
- c# - Path.Combine 不起作用/无法获取工作目录
- influxdb - 如何在 InfluxDB 中设置身份验证?
- python - 如何保持 SQLAlchemy 关系在子类中起作用?
- android - 如何将App卸载后不会删除的文件写入SDCard
- swift - Swift:从有符号 2 的补码 Uint8 到十进制的十六进制数