しばらくの間、たくさんのグーグルで頭を悩ませようとしましたが、役に立ちませんでした。照会する必要がある次のフィールドを含むデータ セットがあります: DEPT,NUM,TERM,ITLE
. 次の可能な行があります。
DEPT--NUM---TERM------TITLE
OSS - 1550 - 200830 - COURSE NAME (CI)
OSS - 1550 - 200930 - COURSE NAME (CI)
OSS - 1550 - 201230 - COURSE NAME
ENG - 1600 - 200930 - OTHER COURSE (CI)
OSS - 1600 - 200830 - ANOTHER COURSE (CI)
USS - 2500 - 201240 - COURSE (CI)
PSY - 1600 - 200830 - COURSE TITLE
私がする必要があるのは、このようなデータでテーブルをクエリしDEPT/NUM
、タイトルが最新のタイトルである場合にのみクエリと一致する (OSS 1550) をプルすることです。
したがって、(CI) を検索すると、上記のセット (ENG 1600、OSS 1600、ISS 2500) を使用して 3 つの結果が必要になります。なぜなら、201230 は OSS 1550 の最新のエントリだからです。他人。今のところ、それを行うクエリを作成する方法を理解することはできません。
どんな助けでも大歓迎です。よくわからない場合はお知らせください。
編集
私は単一のレコードしか取得していません。これは、あなたが言ったことに基づいて使用しているものです。データを選択します。 DESC, SCBCRSE_CRSE_NUMB DESC) as term FROM SCBCRSE WHERE (SCBCRSE_TITLE LIKE '%' || :srch || '%') ) data WHERE data.term = 1
書式設定が機能するようになりました... 4 つのスペースがある理由がわかりません。
再度編集 十分なサンプル データが提供されていないと思います...上記の編集された表を参照してください。タイトルに固有の DEPT/NUM と CI を持つ 3 つのレコードが必要ですが、古いタイトルと CI を持つレコードは必要ありません。わかる。
わかりにくくてすみません。
答え... これが勝者です。
SELECT data.*
FROM (
SELECT SCBCRSE_SUBJ_CODE || ' ' || SCBCRSE_CRSE_NUMB AS crs_combo,
SCBCRSE_TITLE as title,
row_number() over (partition by SCBCRSE_SUBJ_CODE,SCBCRSE_CRSE_NUMB ORDER BY SCBCRSE_EFF_TERM DESC) as seqnum
FROM SCBCRSE
) data
WHERE seqnum = 1 AND title LIKE '%' || :srch || '%'
助けてくれてありがとう。私はこれで何時間も無駄にしました、そしてあなたはそれをメヌエットで答えました。