重複しているとマークされていますが、リンクされた質問で少し説明されているようですが、私はまだ別々の列を取得しようとしていますDEBIT
とCREDIT
列同じ行にOracle SQL:自己結合表の各重複IDの最大レコードを取得する
私はビューを作成しました。私は現在それ自身で参加しています。私は各日付のための最大Header_IDを取得しようとしています。
SELECT DISTINCT
TAB1.id,
TAB1.glperiods_id,
MAX(TAB2.HEADER_ID),
TAB1.batch_date,
TAB1.debit,
TAB2.credit,
TAB1.descrip
FROM
IQMS.V_TEST_GLBATCH_GJ TAB1
LEFT OUTER JOIN
IQMS.V_TEST_GLBATCH_GJ TAB2
ON
TAB1.ID = TAB2.ID AND TAB1.BATCH_DATE = TAB2.BATCH_DATE AND TAB1.GLPERIODS_ID = TAB2.GLPERIODS_ID AND TAB1.DESCRIP = TAB2.DESCRIP AND TAB1.DEBIT <> TAB2.CREDIT
WHERE
TAB1.ACCT = '3648-00-0'
AND
TAB1.DESCRIP NOT LIKE '%INV%'
AND TAB1.DEBIT IS NOT NULL
GROUP BY
TAB1.id,
TAB1.glperiods_id,
TAB1.batch_date,
TAB1.debit,
TAB2.credit,
TAB1.descrip
ORDER BY TAB1.batch_date
そしてこれの出力は(全部で37行)です:
私のSQLは、現在ある
私はDEBIT
を取得するために、それ自体にテーブルを結合していますし、 CREDIT
と同じ行にあります。 BATCH_DATE
ごとに最大HEADER_ID
の行のみを選択するにはどうすればよいですか? @sagi
については
更新
赤いボックスで強調それらは私が欲しいの行で、青いものは、私はフィルタリングてるものだろう。
固定間違い
私は最近、私は確信してTAB2 ACCT = '3648-00-0' を加えることなく、それ自体に私のテーブルに参加していた気づきました。
修正SQLはここにある:ROW_NUMBER()
よう
SELECT DISTINCT
TAB1.id,
TAB1.glperiods_id,
Tab1.HEADER_ID,
TAB1.batch_date,
TAB1.debit,
TAB2.credit,
TAB1.descrip
FROM
IQMS.V_TEST_GLBATCH_GJ TAB1
LEFT OUTER JOIN
IQMS.V_TEST_GLBATCH_GJ TAB2
ON
TAB1.ID = TAB2.ID AND TAB1.BATCH_DATE = TAB2.BATCH_DATE AND TAB2.ACCT ='3648-00-0'AND TAB1.GLPERIODS_ID = TAB2.GLPERIODS_ID AND TAB1.DESCRIP = TAB2.DESCRIP AND TAB1.DEBIT <> TAB2.CREDIT
WHERE
TAB1.ACCT = '3648-00-0'
AND
TAB1.DESCRIP NOT LIKE '%INV%'
AND TAB1.DEBIT IS NOT NULL
ORDER BY TAB1.BATCH_DATE
お返事ありがとうございます!私は今それを試しに行くよ。前にPARTITION BYを使用していませんでした – spyr0
ありがとう!私はそれが動作すると思います!私がbatch_idを見なかったので、しばらく混乱しました。 batch_dateに変更しました – spyr0
ごめんなさい。選択されたクレジットも取り除かれているようです。 – spyr0