You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SAP HANA中DWFR与DWFR3 Schema表对比:补充获取DWFR独有表

解决SAP HANA中DWFR与DWFR3 Schema的表对比需求:匹配表+DWFR独有表

我来帮你搞定这个需求!你现在需要同时获取两类表:一是DWFR和DWFR3中都存在、且符合指定过滤规则的同名表,二是DWFR中存在但DWFR3中没有、同时也满足过滤条件的表。咱们可以通过UNION ALL把原有的匹配表查询和新增的独有表查询合并,一次得到所有结果。

优化后的简洁SQL(推荐)

我用了WITH子句把重复的过滤条件统一抽取出来,这样后续要修改过滤规则只需要改一处,代码更易维护:

WITH filtered_tables AS (
    SELECT schema_name, table_name
    FROM tables
    WHERE table_name NOT LIKE 'RA%'
      AND table_name NOT LIKE 'ZZ%'
      AND table_name NOT LIKE 'DELETE%'
      AND table_name NOT LIKE '%TEST%'
      AND table_name NOT LIKE 'XX%'
      AND table_name NOT LIKE 'ROB%'
)
-- 第一部分:DWFR和DWFR3都存在的同名匹配表
SELECT schema_name, table_name, '匹配表' AS table_type
FROM filtered_tables
WHERE schema_name = 'DWFR'
  AND table_name IN (SELECT table_name FROM filtered_tables WHERE schema_name = 'DWFR3')
UNION ALL
-- 第二部分:DWFR独有且符合过滤条件的表
SELECT schema_name, table_name, 'DWFR独有表' AS table_type
FROM filtered_tables
WHERE schema_name = 'DWFR'
  AND table_name NOT IN (SELECT table_name FROM filtered_tables WHERE schema_name = 'DWFR3')
ORDER BY table_type, schema_name, table_name;

不用WITH子句的写法(适合不习惯CTE的场景)

如果不想用公共表表达式,也可以把过滤条件直接写在两个查询块里,逻辑是一样的:

-- 匹配表部分
SELECT schema_name, table_name, '匹配表' AS table_type
FROM tables
WHERE schema_name = 'DWFR'
  AND table_name NOT LIKE 'RA%'
  AND table_name NOT LIKE 'ZZ%'
  AND table_name NOT LIKE 'DELETE%'
  AND table_name NOT LIKE '%TEST%'
  AND table_name NOT LIKE 'XX%'
  AND table_name NOT LIKE 'ROB%'
  AND table_name IN (
      SELECT table_name 
      FROM tables 
      WHERE schema_name = 'DWFR3'
        AND table_name NOT LIKE 'RA%'
        AND table_name NOT LIKE 'ZZ%'
        AND table_name NOT LIKE 'DELETE%'
        AND table_name NOT LIKE '%TEST%'
        AND table_name NOT LIKE 'XX%'
        AND table_name NOT LIKE 'ROB%'
  )
UNION ALL
-- DWFR独有表部分
SELECT schema_name, table_name, 'DWFR独有表' AS table_type
FROM tables
WHERE schema_name = 'DWFR'
  AND table_name NOT LIKE 'RA%'
  AND table_name NOT LIKE 'ZZ%'
  AND table_name NOT LIKE 'DELETE%'
  AND table_name NOT LIKE '%TEST%'
  AND table_name NOT LIKE 'XX%'
  AND table_name NOT LIKE 'ROB%'
  AND table_name NOT IN (
      SELECT table_name 
      FROM tables 
      WHERE schema_name = 'DWFR3'
        AND table_name NOT LIKE 'RA%'
        AND table_name NOT LIKE 'ZZ%'
        AND table_name NOT LIKE 'DELETE%'
        AND table_name NOT LIKE '%TEST%'
        AND table_name NOT LIKE 'XX%'
        AND table_name NOT LIKE 'ROB%'
  )
ORDER BY table_type, schema_name, table_name;

额外说明

我特意加了table_type字段,这样你在查看结果时能一眼区分出哪些是两个Schema共有的匹配表,哪些是DWFR独有的表,更直观。

内容的提问来源于stack exchange,提问作者Dilip Deenadayalan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:09:36