以下のクエリがあります。私は私の次のクエリで何をしたいのか更新ステートメントの平均関数を使用
select m.ActionId,
TargetTicker,
AVG(p.price)
from tblMADeals m left join
tblMAPrices p on m.ActionId = p.ActionId and m.TargetTicker = p.Ticker
where Ignore = 0
group by m.ActionId,
m.TargetTicker
order by AVG(p.price)
は、平均価格は0しかしSQLは私が声明を更新し好きではないされているテーブルのtblMADealsに2列の更新です。
update m
set m.Ignore = 1,
m.Note = 'no prices target'
from tblMADeals m left join
tblMAPrices p on m.ActionId = p.ActionId and m.TargetTicker = p.Ticker
where m.Ignore = 0 and
AVG(p.price) = 0
がHAVING句または選択リストに含まれるサブクエリであり、そして凝集され、列が外部参照でない限り、凝集は、WHERE句に表示されないこと。
だから私は、あなたがこのような何かをするためにCTEを使用する必要が私のクエリ
selectステートメントに含まれていた更新ステートメントに何か不足していることがありますか?ヒント...データを集約してグループを定義するときに使用されます。 –
avg priece(最初のSQL)をメインテーブルに結合し、その後でwhere句を使用する必要があります。 – plaidDK
AVG(価格)でcteを使用して、cte –