2017-11-28 5 views
0

以下のクエリがあります。私は私の次のクエリで何をしたいのか更新ステートメントの平均関数を使用

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を使用する必要が私のクエリ

+2

selectステートメントに含まれていた更新ステートメントに何か不足していることがありますか?ヒント...データを集約してグループを定義するときに使用されます。 –

+0

avg priece(最初のSQL)をメインテーブルに結合し、その後でwhere句を使用する必要があります。 – plaidDK

+0

AVG(価格)でcteを使用して、cte –

答えて

2

を調整するかどうかはわかりません。

with avgprices as (
select m.ActionId, 
     TargetTicker, 
     AVG(p.price) as avgprice 
    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 

) 

update m set m.ignore = 1,m.note = 'no prices target' 
from tablmadeals m left join avgprices a on a.actionid=m.actionid and a.targetpicker = m.targetpicker 
where avgprice = 0 and m.ignore = 0 
+0

で更新してください。エラーの原因となるのは –

+0

です。@BHouseよく見られませんでした:)その削除:P – plaidDK

0

インナーとのCTEがテーブル

をUDPATEするためにテーブルの上に参加
WITH cte 
AS (
    SELECT m.ActionId ActionId 
     ,TargetTicker TargetTicker 
     ,AVG(p.price) 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 
    ) 
UPDATE m 
SET m.Ignore = 1 
    ,m.Note = 'no prices target' 
FROM tblMADeals m 
INNER JOIN cte c 
    ON m.ActionId = c.ActionId 
     AND m.TargetTicker = c.TargetTicker 
WHERE m.Ignore = 0 
    AND (p.price) = 0 
関連する問題