即使列名不同,该代码如何合并?没关系吗?在子选择中。谢谢
select Distinct AD.MEME_CK
,MECD_EFF_DT as EFF_DT
,MECD_MCTR_AIDC AS PG_DESC
from fac.CMC_MECD_MEDICAID AD
INNER JOIN FAC.CMC_MEME_MEMBER ME
ON ME.MEME_CK = AD.MEME_CK
INNER JOIN FAC.CMC_GRGR_GROUP GR
ON GR.GRGR_CK=ME.GRGR_CK
INNER JOIN fac.CMC_MCTR_CD_TRANS TR
ON TR.MCTR_VALUE=MECD_MCTR_AIDC
AND MCTR_ENTITY='MDAG' AND MCTR_TYPE='AIDC'
where ((MECD_MCTR_AIDC IN ('DE8T', 'DEPB', 'DEPC', 'DEPD', 'DEPE', 'DEPF', 'DEPL', 'DEPS', 'DEPT','DEX3','DE8T'))
or (UPPER(MCTR_DESC) LIKE '%PREG%' and MECD_EFF_DT > sysdate-30 AND GR.CICI_ID IN ('OK','NC','FL','CA')))
AND sysdate BETWEEN MECD_EFF_DT AND MECD_TERM_DT
UNION
/*Member Heatlh Detail Table*/
select Distinct MEME_CK
,MEHE_LAST_DT
,MEHE_IPCD_ID
from fac.CMC_MEHE_HEALTH_DETL D
WHERE ((MEHE_IPCD_ID IN ('PDRN', 'PRED','PRET','PREG','TAPG') AND MEHE_LAST_DT>sysdate-30)
OR (UPPER(MEHE_COMMENT) LIKE '%PREG%' AND MEHE_LAST_DT>sysdate-30)
or (MEHE_IPCD_ID='EDOB' and MEHE_LAST_DT>sysdate)
or (MEHE_IPCD_ID='LATC' AND substr(MEHE_COMMENT,1,4) IN ('013-','053-','104-','127-') AND MEHE_LAST_DT>sysdate-30))
答案 0 :(得分:2)
不,没关系。 From the documentation:
复合查询的组件查询的选择列表中的相应表达式必须在数量上匹配,并且必须位于相同的数据类型组(例如数字或字符)中。
它们不必具有相同的名称-这并不重要。对于最终的预测,Oracle使用第一个分支的表达式名称/别名。您完全不必为后续分支指定别名。因此,可以执行以下操作:
select 42 as some_col from dual
union all
select 5/7 from dual;
SOME_COL
----------
42
.714285714
也from the docs(添加了重点):
集合运算符将两个SELECT语句返回的行合并为一个结果。每个组件查询选择的列的数量和数据类型必须相同,但列长度可以不同。 结果集中的列名称是集合运算符之前的选择列表中表达式的名称。。
其中“在集合操作符之前的选择列表中的表达式的名称”表示在select
之前的第一个union
–我称为第一个分支。