SQL Q&A

 

ORDER BYについて質問です。

ORDER BYについて質問です。
使用環境はSQLSERVER2008です。

成績というカラムに優、良、可、不可という値が入っていたとします。
これを一覧表示し、任意のソート順でならべることができるかどうか知りたいです。

例えば、良、可、不可、優といった順でソートさせるにはどのようにすればよいでしょう?
ORDER BY句で制御できるものでしょうか?

よろしくお願いします。
このエントリーをはてなブックマークに追加
2014-03-03 18:54:05   1431

コメント

2014年 03月 10日 (12:38)
こんにちは。
イノ(inno)です。

ふ~ん。。一応簡単に作成してみました。
これで大丈夫ですかね。
下記のようにJOINを利用してする方法があります。

まず、テストの為に下記のSQLを実行してテーブルとデータを登録してください。

-- #### テーブル作成
CREATE TABLE dbo.TempData
(
UserID varchar(10)
, UserResult nvarchar(10)
)

-- #### テーストデータ登録
INSERT INTO dbo.TempData
SELECT 'A', N'良' UNION ALL
SELECT 'B', N'良' UNION ALL
SELECT 'C', N'優' UNION ALL
SELECT 'D', N'不可' UNION ALL
SELECT 'E', N'優' UNION ALL
SELECT 'F', N'可' UNION ALL
SELECT 'G', N'可' UNION ALL
SELECT 'H', N'不可' UNION ALL
SELECT 'I', N'良'

-- #### データ確認
SELECT * FROM dbo.TempData


-- #### 下記から結果抽出するSQLです。一つずつ実行してみてください。

-- #### 整列:良、可、不可、優
SELECT B.UserID, B.UserResult FROM
(
SELECT 1 Code1, 2 Code2, 3 Code3, N'良' UserResult UNION ALL
SELECT 2 Code1, 3 Code2, 2 Code3, N'可' UserResult UNION ALL
SELECT 3 Code1, 4 Code2, 1 Code3, N'不可' UserResult UNION ALL
SELECT 4 Code1, 1 Code2, 4 Code3, N'優' UserResult
) AS A JOIN dbo.TempData AS B
ON A.UserResult = B.UserResult
ORDER BY A.Code1


-- #### 整列:優、良、可、不可
SELECT B.UserID, B.UserResult FROM
(
SELECT 1 Code1, 2 Code2, 3 Code3, N'良' UserResult UNION ALL
SELECT 2 Code1, 3 Code2, 2 Code3, N'可' UserResult UNION ALL
SELECT 3 Code1, 4 Code2, 1 Code3, N'不可' UserResult UNION ALL
SELECT 4 Code1, 1 Code2, 4 Code3, N'優' UserResult
) AS A JOIN dbo.TempData AS B
ON A.UserResult = B.UserResult
ORDER BY A.Code2


-- #### 整列:不可、可、良、優
SELECT B.UserID, B.UserResult FROM
(
SELECT 1 Code1, 2 Code2, 3 Code3, N'良' UserResult UNION ALL
SELECT 2 Code1, 3 Code2, 2 Code3, N'可' UserResult UNION ALL
SELECT 3 Code1, 4 Code2, 1 Code3, N'不可' UserResult UNION ALL
SELECT 4 Code1, 1 Code2, 4 Code3, N'優' UserResult
) AS A JOIN dbo.TempData AS B
ON A.UserResult = B.UserResult
ORDER BY A.Code3
せんな 2014年 03月 10日 (17:36)
勉強になりました。
ありがとうございます。

SQL SERVER 店舗毎のTOP10

-.日付:2015-12-22   カテゴリ : -   閲覧数:685

SQLServer Management Studio サーバーへの接続履歴を削除したい  (1)

-.日付:2015-03-09   カテゴリ : -   閲覧数:2737

sql server 2008 でselect文のwhere句にcaseを使って複数条件をセットしたい

-.日付:2015-02-12   カテゴリ : -   閲覧数:1533

IDENTITY列の複数テーブルへのINSERT  (1)

-.日付:2014-10-02   カテゴリ : -   閲覧数:1549

Sqlのパフォーマンスについての質問です。  (1)

-.日付:2014-08-27   カテゴリ : -   閲覧数:1399

SELECT時にカウントアップ  (1)

-.日付:2014-08-25   カテゴリ : -   閲覧数:2257

「char」と「varchar」は何か違いがあるのでしょうか?  (1)

-.日付:2014-07-30   カテゴリ : -   閲覧数:1466

Copyright © 2015 INNOYA.COM All rights reserved. RSS