私はこのoracleのすべての列でgroup byを使用せずにagregate関数を使用する方法は?
select s1.sum(price),s1.brand,s2.comment
from X s1, X s2
where s1.date2='131016'
and s1.brand=s2.brand
and s2.date1=(select max(date1) from X where date2='131016')
group by s1.brand;
のようなクエリに何かをしようとしていたdate2の131016.
sum(price) *brand *Comment
**************************
300 *a *i
400 *b *k
のために合計(価格)、ブランド、maxのコメント(DATE1)をしたい、このテーブルX
Date1 *Date2 *Price * Brand*Comment
****************************************
111016 *131016 *100 *a *h
121016 *131016 *200 *a *i
111016 *131016 *300 *b *j
121016 *131016 *100 *b *k
を持っています
ここで私のアプローチが間違っているようです。 上記の方法でデータを表示するためにselectクエリを使用するにはどうすればよいですか?テーブルには合計額を表示する必要がある価格と同様の列が20以上あることを心に留めておいてください。
どの「コメント」値を表示するかはどのように決定しますか?おそらくあなたは 's2.comment'ではなく' max(s2.comment) 'を望んでいるでしょう。しかし、それはあなたが実際にしているものかもしれないし、そうでないかもしれません(少なくとも20個の別々の列の 'max 'を取ることで、たくさんの異なる行からデータを引っ張ってくることは少なくとも疑わしいでしょう)。 –
@ JustinCaveのポイントに。あなたの出力に 'i'と' k'をコメントしたいとどのように決めましたか? 'h'や' j'をコメントしてみませんか?それとも、気にしないで、ブランドごとにランダムなコメントを返すだけですか? – JNevill
'date1'と' date2'のデータ型は何ですか? "日付"の代わりに数値または文字列である場合、比較(MAXなど)は間違った答えを与えます。日付データ型にする日付が必要です。そうでない場合は、文字列の周りに 'to_date()'を使います(文字列の場合)。 – mathguy