Sql 在不存在相应记录的位置插入记录
我有包含以下数据的TBLISSUE:-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
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”的所有现有记录的记录。您的主键是什么?