• 締切済み

ビュー(view)のSQL

SQL初心者で困っております。 どのようなSQLを作成すれば良いか ご助言頂ける方がいらっしゃいましたら よろしくお願いいたします。 テーブルにイメージは以下通りです。 項目1,日付,月,項目2,項目3 1234 ,6/2 ,6 ,A ,1 1234 ,6/4 ,6 ,A ,2 1234 ,6/5 ,6 ,A ,3 1234 ,6/6 ,6 ,B ,1 1234 ,6/6 ,6 ,B ,2 1234 ,6/6 ,6 ,B ,3 1234 ,7/2 ,7 ,A ,1 1234 ,7/4 ,7 ,A ,2 主キーは、項目1,日付です。 ビューで項目1,月をグループ化して、 項目2の昇順のトップ その中で項目3の昇順のトップ のレコードを抽出したいと思います。 結果が以下のようなイメージです。 1234,6,A,1 1234,7,A,1

みんなの回答

回答No.2

分析関数を利用すると・・ select 項目1,月,項目2,項目3 from ( select x.*,row_number() over(partition by 項目1,月 order by 項目2,項目3) R from テーブル x ) where R=1 な感じ。

すると、全ての回答が全文表示されます。
回答No.1

RDBMS名とバージョンを明記してください。 >主キーは、項目1,日付です この2列の組み合わせでは、重複があり、RDBの世界ではこれを主キーとは一般的に呼びません。 top指定、分析関数、サブクエリ中で「limit 1」指定など、こういった操作を実現するための指定は、RDBMS&バージョンにより、相当に異なります。

taka4terada
質問者

補足

回答ありがとうございます。 >RDBMS名とバージョンを明記してください。 Oracleの10gです。 >重複があり、 失礼しました。例が間違っていました。 項目1に対して日付でユニークになります。 1234 ,6/2 ,6 ,A ,1 1234 ,6/4 ,6 ,A ,2 1234 ,6/5 ,6 ,A ,3 1234 ,6/6 ,6 ,B ,1 1234 ,6/7 ,6 ,B ,2 1234 ,6/8 ,6 ,B ,3 2222 ,6/2 ,6 ,A ,1 2222 ,6/4 ,6 ,A ,2 よろしくお願い申します。

すると、全ての回答が全文表示されます。

関連するQ&A