フィールド「ファクター」のテーブル全体に対して更新を実行する方法を見つけようとして立ち往生しています。
「要因」は、同じ「場所」と「日付」を持つ繰り返しレコードの数によって決定されます。
係数計算表があります:
Location - Count - Factor
X - 1 - 1.0
X - 2 - 0.8
X - 3+ - 0.5
私を助けてください!
フィールド「ファクター」のテーブル全体に対して更新を実行する方法を見つけようとして立ち往生しています。
「要因」は、同じ「場所」と「日付」を持つ繰り返しレコードの数によって決定されます。
係数計算表があります:
Location - Count - Factor
X - 1 - 1.0
X - 2 - 0.8
X - 3+ - 0.5
私を助けてください!
これを試して:
UPDATE A
SET Factor = CASE WHEN B.N = 1 THEN 1.0
WHEN B.N = 2 THEN 0.8
WHEN B.N >= 3 THEN 0.5 END
FROM YourTable A
INNER JOIN (SELECT Location, COUNT(*) N
FROM YourTable
GROUP BY Location) B
ON A.Location = B.Location
別の方法:
;WITH CTE AS
(
SELECT *, COUNT(*) OVER(PARTITION BY Location) N
FROM YourTable
)
UPDATE CTE
SET Factor = CASE WHEN N = 1 THEN 1.0
WHEN N = 2 THEN 0.8
WHEN N >= 3 THEN 0.5 END
OVER 句で派生テーブルを使用する
UPDATE x
SET x.Factor = x.NewFactor
FROM (
SELECT Factor,
CASE COUNT(*) OVER (PARTITION BY Location, [date])
WHEN 1 THEN 1.0
WHEN 2 THEN 0.8
ELSE 0.5 END AS NewFactor
FROM dbo.test30
) x