重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

ただいま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;

A 回答 (1件)

RDBMSは、ここのカテゴリ通り、PostgreSQLですか?


バージョンは?

SQLの勉強中とのことですが、何のためにこんなSQLを作っているのでしょうかね?

別名ですが、内側のクエリで付けた名前であれば、外側のクエリで使用できると思います。

select ・・・ from
(select ・・・ from ・・・) as x -- この中で別名を付けたら、外側で使用可能
    • good
    • 0
この回答へのお礼

書き忘れてしまっていたのですが、動作環境はPostgreSQL 8.3です。

クエリを使用する方法は調べていて見つけたのですが、やはりその方法しかないのでしょうか…。

ご回答ありがとうございました*

お礼日時:2009/03/09 13:31

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

関連するカテゴリからQ&Aを探す