2017-03-15 21 views
-1

私は100000レコードのテーブルを持っています。残りの30000レコードを取得するには、以下のクエリの一部として97000レコードを取得します。私は'H.RESOURCE_ID <> SQ.CPNT_OG_ID'に等しくないようにしましたが、正しいデータが得られませんでしたか?ORACLEのJOIN TABLE

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); 
+2

「left join」を試しましたか? – HoneyBadger

+1

最も簡単な方法は、 'missing' 3000レコードを取得し、TBL_ZIM_ITEM_newテーブルがRESOURCE_IDのレコードを持っていることを確認することです。その行のVALIDおよびAPP_IDフィールドをチェックする場合あなたの参加の条件は非常に簡単で、すばやく簡単な作業でなければなりません。 – BriteSponge

答えて

0

JOINをLEFT JOINに置き換えてください。 LEFT JOINまたはRIGHT JOINをSQLで使用すると、結合条件を満たすレコードもフェッチできます。存在しない行で選択された列はNULLになります。

+0

私は左または右を使用して3000レコード以上を取得 –

+0

@Bonniest HI何かを見つけることができますか? –

関連する問題