【发布时间】:2017-08-05 22:25:38
【问题描述】:
我有一个包含 100000 条记录的表,我得到了 97000 条记录,这是下面查询如何获取剩余 30000 条记录的一部分。我试过不等于'H.RESOURCE_ID <> SQ.CPNT_OG_ID',但没有得到正确的数据?
SELECT H.pernr AS "STUD_ID",
SQ.CPNT_TYP_ID,
SQ.CPNT_ID,
TO_CHAR (SQ.REV_DTE, 'MON-DD-YYYY HH24:MI:SS') AS REV_DTE,
CASE --WAIVED
WHEN sq.CPNT_TYP_ID = 'VIDEO' AND enrollment_status = 'Complete'
THEN
'VIDEO-COMPLETE'
WHEN sq.CPNT_TYP_ID = 'VIDEO' AND enrollment_status <> 'Complete'
THEN
'VIDEO-WAIVED'
WHEN sq.CPNT_TYP_ID = 'CERTIFICATION'
AND enrollment_status = 'Complete'
THEN
'CERT-COMPLETE'
WHEN sq.CPNT_TYP_ID = 'CERTIFICATION'
AND enrollment_status <> 'Complete'
THEN
'CERT-WAIVED'
WHEN sq.CPNT_TYP_ID = 'CDOC' AND enrollment_status = 'Complete'
THEN
'CDOC-COMPLETE'
WHEN sq.CPNT_TYP_ID = 'CDOC' AND enrollment_status <> 'Complete'
THEN
'CDOC-WAIVED'
WHEN sq.CPNT_TYP_ID = 'ELEARNING'
AND enrollment_status = 'Complete'
THEN
'Elearning-COMPLETE-PASSED'
WHEN sq.CPNT_TYP_ID = 'ELEARNING'
AND enrollment_status <> 'Complete'
THEN
'Elearning-WAIVED'
ELSE
NULL
END
"CMPL_STAT_ID",
TO_CHAR (H.COMPLETION_DATE, 'MON-DD-YYYY HH24:MI:SS')
AS COMPLETION_DATE,
'RECORD_Admin'
AS "ESIG_MEANING_CODE_ID",
NULL AS "LST_UPD_USR",
sq.rev_num AS "REV_NUM",
'LEARNSHARE' AS "COMMENTS"
FROM ZB_USR_HISTORY_NEW H
JOIN
(SELECT DISTINCT CPNT_ID,
CPNT_TYP_ID,
CPNT_OG_ID,
REV_DTE,
REV_NUM,
CPNT_COURSE_NUM
FROM TBL_ZIM_ITEM_new
WHERE VALID = '1' AND app_id LIKE '%en-us%' OR LENGTH (app_id) < 9)
SQ
ON (H.RESOURCE_ID = SQ.CPNT_OG_ID);
【问题讨论】:
-
你试过
left join吗? -
最简单的方法是从“丢失”的 3000 条记录中取出并检查 TBL_ZIM_ITEM_new 表中是否有 RESOURCE_ID 的记录。如果确实检查了该行的 VALID 和 APP_ID 字段。您的加入条件非常简单,应该是一项快速、简单的任务。