私はこのようなテーブルを持っていますitem_table
:
item age
--------------
1 1
1 6
2 2
私はこのような他のテーブルを持っていますprice_table
:
item pricetype price
--------------------------
1 O 5
1 P 6
1 V 7
2 O 8
2 P 9
2 V 10
したがって、2つのテーブルの上で内部結合したいと思います。
select *
from item_table i
inner join price_table p
on ...
についていくつかの条件がありますon
:
- アイテムの平均年齢がよりも大きい場合は、次の
3
ようにします。inner join price_table on pricetype = 'O' or pricetype = 'P'
- そうでない場合、私はします:
inner join price_table on pricetype = 'O' or pricetype = 'P' or pricetype = 'V'
したがって、条件には条件がありon
ます。
次に、次のようにクエリを記述します。
select i.item, i.type, p.pricetype, p.price
from item_table i
inner join price_table p on i.item = p.item
and (avg(i.age) >= 3 and p.pricetype in ('O', 'P'))
or (avg(i.age) < 3 and p.pricetype in ('O', 'P', 'V'))
エラーが発生します:An aggregate cannot appear in an ON clause unless it is in a subquery contained in a HAVING clause or select list, and the column being aggregated is an outer reference.
他の条件はに依存しているため、avg
に移動できません。Having
avg
選択クエリを作成するにはどうすればよいですか?