Oracle データベースに対してクエリを実行しています。
目標は、次の列を返すことです-
- ドキュメント ID
- ドキュメント作成日
- 組織コード
- ドキュメントのステータス
- 合計金額
私が直面している問題は、組織コードにあります。複数の組織コードを持つドキュメント ID を持つことができます。必要なインスタンスは 1 つだけです - 残りは気にしません (存在する場合)
これが私が現在持っているものです-
SELECT * FROM (SELECT DISTINCT (K_HDR.DOC_HDR_ID),
K_HDR.CRTE_DT,
FS_EXT.VAL AS ORG_CODE,
REQ.REQS_STAT_CD,
FS_DOC.FDOC_TOTAL_AMT
FROM PUR_REQS_T REQ,
KREW_DOC_HDR_T K_HDR,
FS_DOC_HEADER_T FS_DOC,
KREW_DOC_HDR_EXT_T FS_EXT
WHERE REQ.FDOC_NBR = K_HDR.DOC_HDR_ID AND
FS_DOC.FDOC_NBR = REQ.FDOC_NBR AND
REQ.FDOC_NBR = FS_EXT.DOC_HDR_ID(+) AND
FS_EXT.KEY_CD(+)= 'organizationCode' AND
(K_HDR.CRTE_DT BETWEEN TO_DATE('2011-10-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
AND
TO_DATE('2012-09-30 23:59:59', 'YYYY-MM-DD HH24:MI:SS')))
FINAL_SEARCH ORDER BY FINAL_SEARCH.CRTE_DT;
次のクエリは、14,933 行を返します。取得する正しい行数は 14,789 です。
犯人は組織コードです。たとえば、結果セットを見ていると、次のように表示されます -
DOC_ID CRTE_DT ORG_CD STAT TOTAL
.
.
.
496256 5-OCT-11 0 CLOS 2779.89
496258 5-OCT-11 8050 CLOS 1737.5
496258 5-OCT-11 8000 CLOS 1737.5
.
.
.
FS_EXT テーブルに存在する 496258 の迷惑な 2 番目のインスタンスを取り除くにはどうすればよいですか? (明らかに、同じタイプの重複値の他のインスタンスを取り除く必要があります)