0

最新の子レコードの日付を取得するにはどうすればよいですか? SQL では、最新の MOPNOTES.MOPNOTEDATE を取得しようとしています。また、MOPACTIVITY.MOPID ごとに 1 つのレコードのみが必要です。どんな方向性でも大歓迎です。

SELECT DISTINCT MOPACTIVITY.MOPID,
MOPNOTES.MOPNOTEDATE 
FROM MOPUSER.MOPACTIVITY INNER JOIN MOPUSER.MOPNOTES ON MOPACTIVITY.MOPID=MOPNOTES.MOPID
WHERE MOPACTIVITY.MOPEND BETWEEN TRUNC(SYSDATE-1) + INTERVAL '12:00' HOUR TO MINUTE AND TRUNC(SYSDATE) + INTERVAL '9:00' HOUR TO MINUTE
AND UPPER(MOPACTIVITY.MOPSTATUS) = 'COMPLETE'
AND UPPER(MOPACTIVITY.MOPNOTIFICATIONSENT) LIKE '%TRUE%'
ORDER BY MOPACTIVITY.MOPID
4

1 に答える 1

1

日付フィールドの MAX 集計関数を MOPID のグループ化と組み合わせて探し、すべての Id をグループ化し、最新の日付を返します。日付が異なるため、Distinct は機能しませんでした。最大値のみを返すと、1 つの日付が取得され、group by を使用して 1 つの ID が生成されます。

SELECT MOPACTIVITY.MOPID, Max(MOPNOTES.MOPNOTEDATE)
FROM MOPUSER.MOPACTIVITY 
INNER JOIN MOPUSER.MOPNOTES 
  ON MOPACTIVITY.MOPID=MOPNOTES.MOPID
WHERE MOPACTIVITY.MOPEND BETWEEN TRUNC(SYSDATE-1) + INTERVAL '12:00' HOUR TO MINUTE AND TRUNC(SYSDATE) + INTERVAL '9:00' HOUR TO MINUTE
AND UPPER(MOPACTIVITY.MOPSTATUS) = 'COMPLETE'
AND UPPER(MOPACTIVITY.MOPNOTIFICATIONSENT) LIKE '%TRUE%'
GROUP BY MOPACTIVITY.MOPID
ORDER BY MOPACTIVITY.MOPID
于 2013-08-26T18:28:54.377 に答える