ask*_*low 2 sql sql-server sql-server-2008
我想比较多个列,并在不同列之间获得最大值
对于三列,我提出了以下查询,该工作正常
SELECT CASE
WHEN col1 >= col2
AND col1 >= col3 THEN col1
WHEN col2 >= col1
AND col2 >= col3 THEN col2
WHEN col3 >= col1
AND col3 >= col2 THEN col3
ELSE col1
END AS Max_number
FROM (VALUES (1,2,3),
(1,2,3),
(1,2,3)) tc (col1, col2, col3)
Run Code Online (Sandbox Code Playgroud)
但是当我想要比较超过3列时,事情变得越来越复杂.有没有更简单的方法来做到这一点
尝试这个Table Value Constructor技巧
SELECT (SELECT Max(col)
FROM (VALUES (col1),
(col2),
(col3)) tc(col)) AS Max_number
FROM (VALUES (1,2,3),
(1,2,3),
(1,2,3)) tc (col1, col2, col3)
Run Code Online (Sandbox Code Playgroud)
此外,它还处理NULL值
| 归档时间: |
|
| 查看次数: |
384 次 |
| 最近记录: |