重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

初めてOracle 11gを使用して以下の形の
DBから値を取得したいと思っています。

ユーザを絞って1項目だけなら取得することはできたのですが、
複数項目になると取得する方法が思いつきませんでした。


DB(貸出テーブル)は以下の8カラムを持っています。
ユーザID、レンタル開始年月、レンタル終了年月、アクション、ドキュメント、アニメ、洋画、邦画
(アクション、ドキュメント、アニメ、洋画、邦画カラムはboolean型です)
(ジャンルには優先順位があり(1洋画>2邦画>3アクション>4ドキュメント>5アニメ))
複数のジャンルがtrueになっていても、優先順位の高いもののみ、取得をしたいです。


例えば以下の様なレコードがある場合、
A0001,201601,201602,true,false,false,false,false
A0001,201510,201512,false,false,true,false,false
A0002,201512,201601,true,true,false,false,false
A0003,201512,201602,false,true,true,false,false
A0003,201509,201510,false,true,false,true,false
A0004,201512,201602,false,false,false,true,false

取得したい結果は、ユーザ毎の直近のレンタル終了日のもので、且つジャンルの優先順位が高いものを
以下の様に表示をしたいです。
A0001,アクション
A0002,アクション
A0003,ドキュメント
A0004,洋画

色々とやってみたのですが、別のカラムにあるものを
最終的にどのように表示するかがわからず悩んでします。

わかりずらい説明で申し訳ございませんが、教えてください。
よろしくお願いいたします。

A 回答 (1件)

http://www.shift-the-oracle.com/sql/case-when-ex …
複合CASE式は使ってみました?
    • good
    • 0
この回答へのお礼

ありがとうございます。複合CASEを使って作成することができました。
本当に助かりました。

お礼日時:2016/03/27 13:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す