提前谢谢你的帮助 . 我正在为以下更新方案寻找一个简洁的解决方案:
-
我有一个TableA,有5列(KeyCol,colA,ColB,ColC,ColD)
-
我有另一个表2,有2列(KeyCol,AvgCol)
我想做这样的事情:
update AvgCol in table2, joining on KeyCol
从这个逻辑:
-
如果colA和ColB都具有Non NUll值,则计算COlA和COlB的平均值并存储在tempA中,否则在TempA中选择coalesce(Cola / colb),如果两者都是nUll,则在TempA中为NULL
-
如果colC和ColD都具有Non NUll值,则计算COlC和COl的平均值并存储在tempB中,否则在TempB中选择coalesce(ColC / colD),如果两者都是nUll,则在TempB中为NULL
-
如果TempA和TempB都具有非NUll值,则计算TempA和TempB的平均值并存储在Table2.AvgCol中,否则选择coalesce(TempA / TempB),如果两者都是nUll,则为NULL
6 回答
我想这会做到的 . 我正在使用isnull并交换每个isnull中列的顺序,因此如果该对中只有一列为null,则计算基本上变为(XX)/ 2,这只是X.换句话说,如果只有一个该对为null,返回非null值 . 如果两者都为null,则整个计算将返回null .
独占使用
COALESCE
可以大大减少代码开销:你应该使用案例
尝试这个尺寸
将数字添加到null时,结果为null . coalesce,如果两个值都为null,则返回null .
只是为了好玩,这里已经有足够的其他解决方案了: