我有一个查询,我想要与 ANSI SQL 标准兼容。在这个
使用 oracle 查询 MINUS key work,我想要 ANSI SQL 这是
放置于 MINUS 关键字
SELECT 'F' selected,
UPPER (( a.business
|| ' '
|| a.data_source
|| ' '
|| a.frequency
|| ' '
|| a.case_symbol
)
) AS display_name,
SUBSTR (( a.business
|| '_'
|| a.data_source
|| '_'
|| a.frequency
|| (CASE
WHEN a.case_symbol IS NULL
THEN ''
ELSE '_' || a.case_symbol
END
)
),
0,
30
) AS summary_schema_name,
(SELECT ef.frequency_name
FROM etl_frequencies@etlmgr_srv_ubatchh_lx ef
WHERE ef.frequency = a.frequency) data_frequency_name,
a.case_symbol subset_key, '' subset_name
FROM (SELECT DISTINCT ebdf.business, ebdf.data_source, ebdf.frequency,
c.case_symbol
FROM etl_bus_datasrc_frequencies@etlmgr_srv_ubatchh_lx ebdf INNER JOIN etl_rulesets@etlmgr_srv_ubatchh_lx er
ON ( ebdf.business = er.business
AND ebdf.data_source = er.data_source
AND ebdf.frequency = er.frequency
)
LEFT OUTER JOINe etl_db_output_fact_rules@etlmgr_srv_ubatchh_lx r
ON er.ruleset_id = r.ruleset_id
LEFT OUTER JOIN etl_db_output_fact_cases@etlmgr_srv_ubatchh_lx c
ON r.db_output_fact_rule_id =
c.db_output_fact_rule_id
MINUS
SELECT c.business_unit_key, e.data_source_key, f.data_frequency_key,
g.data_source_subset
FROM tb_module_summary_schema a INNER JOIN tb_module b
ON a.module = b.module
INNER JOIN tb_business_unit c
ON b.business_unit_id = c.business_unit_id
INNER JOIN tb_summary_source_type d
ON a.summary_source_type_id = d.summary_source_type_id
INNER JOIN tb_data_source e
ON d.data_source_id = e.data_source_id
INNER JOIN tb_data_frequency f
ON d.data_frequency_id = f.data_frequency_id
LEFT OUTER JOIN tb_data_source_subset g
ON d.data_source_subset_id = g.data_source_subset_id
) a
ORDER BY a.business, a.data_source, a.frequency, a.case_symbol
Oracle 21c 允许EXCEPT syntax. https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/Set-Operators.html在早期版本中,如果您无法使用MINUS
,您可以使用此解决方法来模仿该功能:
select <columns>
from (
select 'SRC' as data_source, <columns>
from source_table
union all
select 'TRG' as data_source, <columns>
from target_table
)
group by <columns>
having max(data_source) = 'SRC';
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)