case
とgroup by
というステートメントでテーブルを更新したいとします。group by + caseステートメント
私はsalary
列を含むプレーヤーテーブルを持っており、各行にはgroup_name
があります。
私は給与が平均グループ給与よりも大きいすべての選手を更新したいと思います。
まず、名前、選手給与、チーム平均給与を列挙しようとしました。私はこれに問題があり、私は助けを得ることをうれしく思います。
select first_name,
last_name,
group_name,
salary,
(
select round(avg(salary),2) as salary
from players
group by group_name
)
from players
ありがとうございます!
MERGE INTO MyTable MyTable
USING
(
SELECT a.player,
a.[group],
a.sal,
b.sal2
FROM MyTable a
INNER JOIN
(
SELECT [group],
AVG(Sal) sal2
FROM MyTable
GROUP BY [group]
) b ON a.[group] = b.[group]
AND a.sal > b.sal2
) YY
ON YY.player = MyTable.player
AND YY.[group] = MyTable.[group]
WHEN MATCHED
THEN UPDATE SET
MyTable.sal = yy.sal2;
このシナリオの内部結合を使用 –
サンプルテーブルのデータと期待される結果、および書式付きテキストを追加します。 – jarlh
これらの行の値をどのように更新しますか? –