• 締切済み

ASで指定した項目名をGROUP BYやORDER BYで使用する方法。

ただいまSQLの勉強をしています。 タイトルどおりなのですが、ASで指定した項目名をGROUP BYやORDER BYで使用する方法はあるのでしょうか? CASE文を使用したこちらのSQL文↓で、SELECT文、GROUP BY句、ORDER BY句の中に重複する部分が多く出てしまうのでどうにかすっきりさせたいと思い、独自に調べたり色々と試したのですがわからず、質問させていただきました。 お分かりになる方、いらっしゃいましたらご助言どうぞよろしくお願いいたします。 <SQL文> SELECT CASE WHEN trancd % 3 = 1 THEN '購入番号(1,4,7,…)の集計' WHEN trancd % 3 = 2 THEN '購入番号(2,5,8,…)の集計' ELSE '購入番号(3,6,9,…)の集計' END AS グループ名称 , sum(suryo) AS 数量合計 FROM tran GROUP BY CASE WHEN trancd % 3 = 1 THEN '購入番号(1,4,7,…)の集計' WHEN trancd % 3 = 2 THEN '購入番号(2,5,8,…)の集計' ELSE '購入番号(3,6,9,…)の集計' END ORDER BY CASE WHEN trancd % 3 = 1 THEN '購入番号(1,4,7,…)の集計' WHEN trancd % 3 = 2 THEN '購入番号(2,5,8,…)の集計' ELSE '購入番号(3,6,9,…)の集計' END;

みんなの回答

回答No.1

RDBMSは、ここのカテゴリ通り、PostgreSQLですか? バージョンは? SQLの勉強中とのことですが、何のためにこんなSQLを作っているのでしょうかね? 別名ですが、内側のクエリで付けた名前であれば、外側のクエリで使用できると思います。 select ・・・ from (select ・・・ from ・・・) as x -- この中で別名を付けたら、外側で使用可能

noname#114110
質問者

お礼

書き忘れてしまっていたのですが、動作環境はPostgreSQL 8.3です。 クエリを使用する方法は調べていて見つけたのですが、やはりその方法しかないのでしょうか…。 ご回答ありがとうございました*

関連するQ&A