プロが教えるわが家の防犯対策術!

Order By の使い方について教えてください。 (初心者です)

下のような順番で結果を求めています。
Item NO QTY
P001     10
P002      8
P003     20
N001     13
N002     50
Q001     5
Q002    33
Q003     6

Table内のItemNOはA001から alphabetの順番でZ005まであるものとして、上記のP,N,QのItemNoのものだけをこの順番で求めたいのです。
もちろん、WHERE-clauseにはこの8件のItemNOの指定はしてあります。

Order by left(ItemNO, 1) DESC (またはASCE), substring(ItemNo, 2,4) ASC
これでは、P,N,Qの順番にはなりません。
最初にP Number、次にN Number、最後にQ Numberを出すにはどうしたらいいのでしょうか。
Order Byの次に8個のItemNOを上記の順番に書いて指定することはできるのでしょうか。
Order Byには "Case When" が使えるとあるinternetで見たのですが、もし使えるとしたらこの順番をだすのに使えるのでしょうか。

ご指導お願いいたします。

A 回答 (2件)

こちらに回答しました。


http://oshiete.goo.ne.jp/qa/6665086.html
    • good
    • 0
この回答へのお礼

ありがとうございました。
別の場所も確認いたしました。

お礼日時:2011/04/16 00:13

簡単なのは、P,N,Qを其々選んでUNIONでくっつける。

パフォーマンス悪いしスマートで無い。

もうひとつはテーブル変数を使って、一時的に並べ順コードを割り当てて再抽出する。つまりストアドを作成する。

もうひとつは、テーブル変数ではなくサブクエリで並べ順をつける。この場合はCASEでPなら1、Nなら2、Qなら3と言うように新しい項目を作成し、元テーブルにする。それをさらに新しい項目順に selectする。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2011/04/16 00:12

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