【发布时间】:2010-03-02 22:50:37
【问题描述】:
所以我有 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;
【问题讨论】:
标签: sql sql-server tsql null average