cwui 2024-07-15 11:48 采纳率: 27.8%
浏览 16
已结题

判断两个表是否完全相同

要求只能使用SAP HANA SQL Script

img

如上图,
表T1字段COMP, PLANT , STORE所有值都在T2,则判定两表相同。
如果T1任一字段的任一值无法在T2找到,比如:T1的S002或P003,则判定两表不相同。
两表是否相同,可以用另外的字段来表示,比如FLAG = Y 则表示相同,等等。

  • 写回答

15条回答 默认 最新

  • 阿里嘎多学长 2024-07-15 12:21
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    你的SQL代码结构基本上是正确的,但需要进行一些调整以确保逻辑的准确性。在SAP HANA SQL中,你可以使用UNION来合并两个表的结果,然后使用EXCEPT来找出两个表之间的差异。如果EXCEPT的结果为空,那么表示两个表是相同的。

    以下是根据你的要求调整后的SQL代码示例:

    -- 定义一个临时表来存储结果
    CREATE TEMPORARY TABLE IF NOT EXISTS ResultTable (FLAG VARCHAR(1));
    
    -- 插入比较逻辑
    INSERT INTO ResultTable (FLAG)
    SELECT
      CASE
        -- 如果T1中的COMP, PLANT, STORE字段的所有值都能在T2中找到,则FLAG为'Y'
        WHEN NOT EXISTS (
          SELECT 1 FROM T1
          WHERE T1.COMP NOT IN (SELECT COMP FROM T2)
            OR T1.PLANT NOT IN (SELECT PLANT FROM T2)
            OR T1.STORE NOT IN (SELECT STORE FROM T2)
        ) THEN 'Y'
        -- 否则,FLAG为'N'
        ELSE 'N'
      END AS FLAG;
    
    -- 查询结果
    SELECT FLAG FROM ResultTable;
    

    这段代码首先创建了一个临时表ResultTable来存储比较结果。然后,通过INSERT INTO语句插入比较逻辑。这里使用了NOT EXISTS子查询来检查T1中的每个字段值是否都能在T2中找到。如果任何一个字段值在T2中找不到,NOT EXISTS将返回falseCASE语句将设置FLAG为'N'。如果所有值都能找到,FLAG将被设置为'Y'。

    最后,通过SELECT语句查询ResultTable中的FLAG字段,以获取最终的比较结果。

    请注意,这段代码假设你已经有了两个表T1T2,并且它们具有相同的列结构。如果列结构不同,你需要根据实际情况调整列名和逻辑。此外,这段代码没有考虑表中可能存在的NULL值,如果需要处理NULL值,你可能需要添加额外的逻辑来处理这种情况。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月15日
  • 创建了问题 7月15日

悬赏问题

  • ¥15 问题重发,R语言:代码运行过程中出现如下警告,请求如何解决!
  • ¥15 苍穹外卖拦截器token为null
  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
  • ¥20 wpf datagrid单元闪烁效果失灵
  • ¥15 券商软件上市公司信息获取问题
  • ¥100 ensp启动设备蓝屏,代码clock_watchdog_timeout
  • ¥15 Android studio AVD启动不了
  • ¥15 陆空双模式无人机怎么做
  • ¥15 想咨询点问题,与算法转换,负荷预测,数字孪生有关
  • ¥15 C#中的编译平台的区别影响