所以我有 3 个不同的列(篮子 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;