Как можно объединить поля в этом коде с разными именами? - PullRequest
0 голосов
/ 15 мая 2019

Как объединяется этот код, даже если имена столбцов разные? Это не имеет значения? Это в под-выборе. Спасибо

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))

1 Ответ

2 голосов
/ 15 мая 2019

Нет, это не имеет значения. Из документации :

Соответствующие выражения в списках выбора запросов компонентов составного запроса должны совпадать по числу и должны быть в одной группе типов данных (например,числовой или символьный).

Они не обязательно должны иметь одинаковые имена - это не важно.Для окончательной проекции Oracle использует выражения имена / псевдонимы из первой ветви;Вы не должны давать последующим псевдонимам ветвей вообще.Так что можно сделать что-то вроде:

select 42 as some_col from dual
union all
select 5/7 from dual;

  SOME_COL
----------
        42
.714285714

Также из документов (выделение добавлено):

Операторы набора объединяют строки, возвращаемые двумяВЫБЕРИТЕ утверждения в единый результат.Число и типы данных столбцов, выбранных каждым запросом компонента, должны быть одинаковыми, но длина столбцов может быть разной. Имена столбцов в результирующем наборе - это имена выражений в списке выбора, предшествующих оператору набора .

где "имена выражений в списке выбора«предшествующий оператору множества» означает первую select, перед union - то, что я называю первой ветвью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...