我有三列不同的数据(篮子1、2和3),有时这些列中包含所有信息,有时其中一列或两列为空。我还有另一列要将这些值求平均并保存。
是否有一种简单的方法来计算这三列的平均值,即使其中一个为空?还是我必须对每个为空的列进行特殊检查?
示例数据(~~表示为空)
- 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;