みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

group by句

以下のSQL文がoracle9iでOKで8iで通らないのですが、8iでも通るようになんとかできないでしょうか。

select a.val_Id,
(select val_nm from tableA where val_id = a.val_id) as val_nm
from tableA a
group by a.val_id

テーブルの内容
tableA(
val_id number(1,0),
val_code number(2,0),
val_nm varchar(10)
)

val_idとval_codeで一意となっています。
val_nmはval_idと一対一になっています。
要するにval_idに対応するval_nmも一緒に取得したいのですが、select句のサブクエリで8iの場合"group byの式ではありません"とおこられてしまいます。
ちなみに、今ここでは簡略化しているのですが本来は色なテーブルを結合しているので、単にgroup by val_id,val_nmとするのは無しでお願いいたします。

わかりにくいかとは思いますがお知恵をお貸しください。宜しくお願いいたします。

投稿日時 - 2004-04-05 21:06:59

QNo.823862

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

なかなか説明しづらい複雑なことを行いたいとようですね。ですが、このSQLを見る限り、
>val_nmはval_idと一対一になっています。
から
select val_Id, val_nm from tableA
でいいような気がしてしまいます。

他に良い方法があるような気がするのですが...。ご面倒だとは思いますが、全てのテーブル定義(フィールド必要部分のみ)と抽出条件を差し支えない程度に全て書いたほうがみなさんも答えやすいかと思います。

投稿日時 - 2004-04-06 16:43:25

お礼

アドバイスありがとうございます。
質問はgroup by句で使用していないカラムの取得でしたのでご回答のSQLでは用を足さないのですが説明がわかりにくかったですね。すみません。

select a.val_id, a.val_nm
from tableA a,
(select val_id from tableA group by val_id) b
where a.val_id = b.val_id

で解決しました。お手数おかけしました。

投稿日時 - 2004-04-06 20:13:28

あなたにオススメの質問