SQL中最重要的三列

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列时,事情变得越来越复杂.有没有更简单的方法来做到这一点

Pரத*_*ீப் 6

尝试这个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