したがって、3つの異なる列(バスケット1、2、および3)があります。これらの列にすべての情報が含まれている場合もあれば、そのうちの1つまたは2つがnullである場合もあります。これらの値を平均して保存する別の列があります。
これらの3つの列の1つがヌルであっても、これらの3つの列の平均を取得するための洗練された簡単な方法はありますか?または、それぞれがnullであるかどうかを特別にチェックする必要がありますか?
データの例(~~はnullです)
- B1 - B2 - B3 - Avg
------------------------------
- 10 - 20 - 30 - 20
- 10 - ~~ - 30 - 20
- ~~ - 20 - ~~ - 20
一時テーブルを更新するためにT-SQLを作成するにはどうすればよいですか?
UPDATE @MyTable
SET Avg = ???
回答:私が使用した方法を提供してくれたAaronaughtに感謝します。他の誰かが同じことをしている場合に備えて、ここにコードを配置します。
WITH AverageView AS
(
SELECT Results_Key AS xxx_Results_Key,
AVG(AverageValue) AS xxx_Results_Average
FROM @MyResults
UNPIVOT (AverageValue FOR B IN (Results_Basket_1_Price, Results_Basket_2_Price, Results_Basket_3_Price)) AS UnpivotTable
GROUP BY Results_Key
)
UPDATE @MyResults
SET Results_Baskets_Average_Price = xxx_Results_Average
FROM AverageView
WHERE Results_Key = xxx_Results_Key;