SQL Q&A

 

ORDER BYについて質問です。

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

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

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

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

コメント

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 で 翌月10日を取得する方法を教えてください。  (1)

-.日付:2014-03-31   カテゴリ : -   閲覧数:1453

一時テーブルが存在するかチェックする方法を教えてください。  (1)

-.日付:2014-03-13   カテゴリ : -   閲覧数:1394

変数の使い方について質問です。  (5)

-.日付:2014-03-12   カテゴリ : -   閲覧数:1400

OUTER JOIN と TOP10との組み合わせ  (1)

-.日付:2014-03-10   カテゴリ : -   閲覧数:1427

ORDER BYについて質問です。  (2)

-.日付:2014-03-03   カテゴリ : -   閲覧数:1432

各テーブルのカウントを出力するSQL文を作成したいのですが  (2)

-.日付:2014-02-27   カテゴリ : -   閲覧数:1474

SQL SERVER 2008 で日付型のフォーマット設定を教えてください。  (2)

-.日付:2014-02-25   カテゴリ : -   閲覧数:1423

Copyright © 2015 INNOYA.COM All rights reserved. RSS