Sql 在不存在相应记录的位置插入记录

Sql 在不存在相应记录的位置插入记录,sql,oracle,Sql,Oracle,我有包含以下数据的TBLISSUE:- 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 98907

我有包含以下数据的TBLISSUE:-

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
脚本将查找始终存在的问题。我希望添加新记录,但前提是现有已解析记录不存在

我曾尝试在insert的where子句中使用此选项,但仍添加了一行

  WHERE
        NOT EXISTS (
            SELECT
                *
            FROM
                tblissues
            WHERE
                (x.quoteid = tblissues.quoteid
                AND   tblissues.issue_type = 'TPIUplift'
                AND   tblissues.resolved <> 'Y')
因此,使用上面的示例数据,我不希望为QUOTEID 988403插入一行,因为它的解析值是Y

这可能吗

我不希望为QUOTEID 988403插入一行,因为它已解决 值为Y

考虑到这一点以及您的QUOTEID不同,但所有记录的发布类型都相同的事实,您不应该简单地使用它吗

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

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

我认为您需要执行tblissues.resolved='Y'而不是tblissues.resolved'Y',在问题的最后一行不存在。@EzLo如果执行此操作,则会为每个已解决'Y'的现有记录添加一条记录,您有一条不存在的记录该查询,因此只有当已解析='Y'的记录不在该表中时,它才会插入新值,这正是您所需要的。@EzLo它的行为不是这样的。同样,它将插入解析为“Y”的所有现有记录的记录。您的主键是什么?