代码之家  ›  专栏  ›  技术社区  ›  bd528

在不存在对应记录的地方插入记录

  •  0
  • bd528  · 技术社区  · 8 年前

    我有包含以下数据的问题:

    ISSUEID QUOTEID ISSUE_TYPE  DATE_ADDED  DATE_RESOLVED   RESOLVED_BY RESOLVED
    4312    989435  TPIUplift   14-Jun-18                               N
    4316    989077  TPIUplift   14-Jun-18                               N
    4333    989071  TPIUplift   14-Jun-18                               N
    4324    988403  TPIUplift   14-Jun-18   14-Jun-18       JohnSmith   Y
    4323    988402  TPIUplift   14-Jun-18                               N
    4317    987964  TPIUplift   14-Jun-18                               N
    

    这个剧本:

    INSERT INTO tblissues (
        quoteid,
        issue_type,
        date_added,
        resolved
    )
        SELECT
            *
        FROM
            (
                SELECT
                    q.quoteid,
                    'TPIUplift',
                    trunc(SYSDATE) newissuedate,
                    'N'
                FROM
                    tblquotesnew q
                    LEFT JOIN tbltariffsnew t ON q.tariff_id = t.tariffid
                WHERE
                    t.uplift = 0
                    AND   q.sales_route = 'TPI'
                    AND   q.quote_status = 'Accepted'
                    AND   q.status <> 'Cancelled'
            ) x
    

    脚本查找问题(这些问题将始终存在)。我希望添加新记录,但前提是现有的已解析记录不存在。

    我已在插入的where子句中尝试使用此语句,但仍添加了一行

      WHERE
            NOT EXISTS (
                SELECT
                    *
                FROM
                    tblissues
                WHERE
                    (x.quoteid = tblissues.quoteid
                    AND   tblissues.issue_type = 'TPIUplift'
                    AND   tblissues.resolved <> 'Y')
    

    所以使用上面的示例数据,我不希望为quoteid 988403插入行,因为它的解析值是y。

    这可能吗?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Kaushik Nayak    8 年前

    我不想为quoteid 988403插入行,因为它已经解决了 价值是Y.

    考虑到这个事实 QUOTEID 是不同的,但是 ISSUE_TYPE 所有记录都一样,难道你不应该简单地使用这个吗?

      WHERE NOT EXISTS 
      ..
      ..
            (
              WHERE   tblissues.ISSUE_TYPE = x.ISSUE_TYPE
               AND    tblissues.resolved   = 'Y' )
    

    如果没有,请更新您的问题并为预期的输出添加更多的行,并清楚地解释您想要什么。