- - PR -
SELECT文の条件検索の条件を複数をひとつに指定
1
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-07-22 15:19
こんにちわ よろしくお願いします。
使っているDBがoracleDBです。 SELECT 記号 番号 区分 年 月 氏名 レセプトコード FROM 台帳 keyはレセプトコード、記号、番号、年、月にしています。 上記のテーブルを前件表示の一覧表を作りたいのですが、 今まではkeyはレセプトコードのみにして登録する時に+1していただけなので レセプトコードの小さい順で前件表示できていたのですが、変更があり上記の5項目がkeyに変更になりました。 そこで質問があるのですが、WHERE文で条件検索をする時に、keyの5項目を一つに結合して 検索をすることって可能なのでしょうか? | ||||||||
|
投稿日時: 2005-07-22 16:04
「前件表示の一覧表」ってどんなものなのか分かりませんが、 「レセプトコードの小さい順で前件表示」って部分から キー値がある値よりも大きい値を持つレコードを取得して、 キー値でソートした結果を取得したい。 ってことでしょうか? かつ今回はキーが1列⇒5列に変更になったという感じ?
一番単純なのは 5列を文字列連結した値がどうなのか? って言うWhere句を作成することですかね・・・。 これで出来るんですが、処理性能が気になるところです。 (手元の環境(Oracle9i)では、 インデクス構成列を文字列連結してWhereに指定したSQLをSQL*Plus上から実行したところ、 インデクス利用がされているのを確認できましたが・・・) | ||||||||
|
投稿日時: 2005-07-22 16:40
「keyの5項目を一つに結合して」という意味がわからないのですが、単純に
てな感じではダメでしょうか。 どういう処理をお望みかわからないので、入力データ例と出力イメージ、それと出来ればどういう SQL 文を試してダメだったか書き込んでいただけますか。 | ||||||||
|
投稿日時: 2005-07-22 16:58
レセプトコード:記号が以下のようなデータとなっていて 100:A 100:B 100:C 200:A 200:B 200:C 300:A 300:B 300:C レセプトコートが200以上かつ記号がB以降のデータが欲しい場合に レセプトコード >= 200 AND 記号 >= B って記述してしまうと 300:Aが対象外になってしまうじゃないですか。 で仕方なく、レセプトコード||記号 >= 200B ってしたりすることがあるので、そのパターンかなぁって思ったんですが。 いかがですか? > 未記入さん #以前、請け負っていた仕事でこういう処理が多々あったので、 #意識がそちらにはまっただけかも知れない・・・(^^; #下の発言に伴い言葉の修正 以上⇒以降 [ メッセージ編集済み 編集者: 夏椰(かや) 編集日時 2005-07-22 17:37 ] | ||||||||
|
投稿日時: 2005-07-22 17:14
こんばんわ。
直感的に「あれ?」と思ったのですが ・レセプトコートが200以上かつ記号がB以上のデータが欲しい ・300:Aが対象外になってしまう これでいいんじゃないんですか? だって、「300:A」は記号が「B 以上」じゃないから、 取得対象外になるんですよね? ( 以上、って C とか D とかですよね??? ) 何か勘違いしています、私? | ||||||||
|
投稿日時: 2005-07-22 17:36
未記入さんの求めている結果が明示的でないので、いいか悪いかは 私にはいえません。 #なんで いかがですか? って振ってみているんですけどね(^^; 単純に 「レセプトコードが200以上かつ記号がB以上のデータ」 っていいかたよくなかったですね。(^^; 「レセプトコードが200以上かつ記号がB以降のデータ」 が欲しいのかしら?って思っただけです。 失礼いたしました。 | ||||||||
|
投稿日時: 2005-07-22 17:46
こんばんは。
私こそ、勘違いしていました。 質問者は「未記入」さんで、 夏椰(かや)さんは回答 ( 及び最初の質問に対する質問 ) をしていたのですね(--;;; と、いう事で「未記入」さんの求めている結果がどういうものかが キーになってくるのですね。 ※ やっぱり脊髄反射で書き込むとロクな事がないですな。はっはっは。。。 | ||||||||
1
