cwui 2024-07-15 19:54 采纳率: 28.6%
浏览 14
已结题

判断两个表是否完全相同

要求只能使用SAP HANA SQL Script

img

如上图,
表T1字段COMP, PLANT , STORE所有值都在T2,则判定两表相同。
如果T1任一字段的任一值无法在T2找到,比如:T1的C1 P2 S2在T2无法找到,则两表不相同。
两表是否相同,可以用另外的字段来表示,比如FLAG = Y 则表示相同,等等。
注意:两个表,每个字段的值的合集有可能相同,比如T2虽然少了C1 P2 S2,但是字段PLANT的合集依然与T1的PLANT一致,都是P1 和P2

  • 写回答

30条回答 默认 最新

  • 阿里嘎多学长 2024-07-15 19:54
    关注
    获得0.15元问题酬金

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


    根据您提供的信息和需求,我将为您提供一个SAP HANA SQL Script的示例,用于判断两个表T1和T2在字段COMP, PLANT, STORE上是否完全相同,并使用FLAG字段来表示结果。

    首先,我们需要检查T1表中的每一行在T2表中是否存在对应的行。如果T1表中的任何一行在T2表中找不到,我们将设置FLAG为'N',表示两表不相同。如果所有行都找到了匹配,我们将设置FLAG为'Y'。

    以下是SQL Script的示例代码:

    -- 定义一个临时表来存储结果
    CREATE LOCAL TEMPORARY TABLE #RESULT (
        FLAG NVARCHAR(1)
    );
    
    -- 插入结果到临时表
    INSERT INTO #RESULT
    SELECT
      (CASE
        WHEN NOT EXISTS (
          -- 检查T1的每一行在T2中是否存在
          SELECT 1 FROM T1
          WHERE NOT EXISTS (
            SELECT 1 FROM T2
            WHERE T2.COMP = T1.COMP AND T2.PLANT = T1.PLANT AND T2.STORE = T1.STORE
          )
        ) THEN 'N'
        ELSE 'Y'
      END) AS FLAG
    FROM DUAL;
    
    -- 查询最终结果
    SELECT FLAG FROM #RESULT;
    

    这段代码首先创建了一个临时表来存储结果。然后,它使用了一个嵌套的NOT EXISTS子查询来检查T1表中的每一行是否在T2表中都有对应的行。如果存在至少一行在T2中找不到,FLAG将被设置为'N'。如果所有行都找到了匹配,FLAG将被设置为'Y'。最后,查询结果将从临时表中检索出来。

    请注意,这个示例假设您的表结构和字段名称与您提供的信息一致。在实际使用中,您可能需要根据实际的表结构和字段名称进行调整。此外,由于您提供的是图片信息,具体的字段名称和表结构可能需要您根据实际情况进行确认。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 7月23日
  • 创建了问题 7月15日