- - PR -
【SQLServer】ASで指定した項目名を GROUPBYで使用する方法
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-04-24 13:44
いつもお世話になります。
なんとか過去ログからと思って探したて見たのですが、 見つける事が出来なかったので新たに投稿させていただきました。 もし同じ内容がログにありましたら申し訳ありません。 タイトルどおりなのですが Select (Case文などの式) AS NameA FROM・・・ という風に名前をつけた項目をGROUP BY に使用したい場合、 ASで指定した名前をそのまま使用するとエラーになりますよね。。。 今まではその場合 (Case文などの式) をそのままGROUP BYに使用していたのですが、 他の人が作ったソースで何らかの方法でその名前を使っていたのを目にしたことがあるのです。 その時は「へえ、こうやったら出来るんだぁ」と、記憶したつもりだったのですが、 いざ使ってみようとしたら、その方法が思い出せません。 もしかしたら ORDER BYだったかもしれません (それだったら普通に出来ますよね?) と言うぐらい記憶があやふやで申し訳ないのですが、 もし実際に AS で指定した名前をGROUP BY に使用する方法があれば、 教えていただけないでしょうか。 当方使用DBはSQLServer2005 です。 何卒よろしくお願い致します。 | ||||
|
投稿日時: 2008-04-25 12:35
こんにちは。
SELECT w.NameA FROM ( Select (Case文などの式) AS NameA FROM・・・ ) w GROUP BY w.NameA じゃだめですか? | ||||
|
投稿日時: 2008-05-13 13:56
よっしーさん、ご回答有難うございます。
返信が遅れて申し訳ありませんでした。 当日回答がなかったのであきらめてしまい、 その後見ていませんでした・・・。 確かに、Case文の項目のSelect文をテーブルに してしまえば("副問い合わせ"であってますか?) いけますね・・・。 直接はやはり無理と言うことでしょうか・・・。 有難うございました。 | ||||
|
投稿日時: 2008-05-13 19:28
MySQLなら、拡張しているので列別名が使えます。
Oracleでは文法エラーですし、 SQLServerでも文法エラーです。 DB2とpostgreSQLは知りません ![]() | ||||
|
投稿日時: 2008-05-13 19:47
おっ、面白い。
DB2は文法エラー。 PostgreSQLは列別名をサポートしているどころか、ORDER BYで使えるような列位置までサポートしています。 http://www.postgresql.jp/document/pg831doc/html/sql-select.html#AEN60141 こりゃ便利だ。プログラムの中では使わないけど。 お、列位置はMySQLでも使えるようですね。 | ||||
|
投稿日時: 2008-05-13 21:36
1日くらい待とうよ。。 |
1