プロが教える店舗&オフィスのセキュリティ対策術

(別のCategoryに載せてしまいましたがみつかりませんので、正しいCategoryで再掲載しています。)

T-SQL: 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と3桁番号の順番でY005まであるものとして、上記の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 回答 (1件)

こうしたらどうでしょうか。


order by
case substring(itemNo,1,1)
when 'P' then 1
when 'N' then 2
when 'Q' then 3
else 99
end
, itemNo

SQLServerの環境がないので動作確認はしていませんが・・・
    • good
    • 0
この回答へのお礼

完璧に動きました。
今まで喉に詰まっていたのですっきりしました。
ありがとうございました。感謝いたします。

お礼日時:2011/04/14 02:16

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