SQL Service实现同一行几个字段的比较,有很多方法,常用的是CASE WHEN进行判断,但如果涉及到的字段非常多,case情况有很多种时就比较难写了,
个人觉得如下方法是个不错的选择,先看一个简单的例子,
SELECT
(SELECT MIN(NUM) NUM FROM (VALUES(COL1),(COL2) ) AS #TEMP_NUM(NUM) ) NUM
FROM TABLE1
解析一下这句话的意思就是,从TABLE1中选择COL1,COL2作为一个临时表 “#TEMP_NUM(NUM自定义字段名) ”,
再从临时表中用聚合函数选择最小值MIN(NUM),达到同一行数据多个字段之间相互比较的效果,同理可以举一反三,
用于更复杂一些的计算,比如:
SELECT
(SELECT MIN(NUM) NUM FROM (VALUES(FLOOR((RruNewTdd-[RruNum])/[RruNum])),(FLOOR((CellNewTdd-[PhyCellNum])/[PhyCellNum]))) AS #TEMP_NUM(NUM)) NUM
FROM TABLE1