Es posible que queramos coger los valores de diferentes columnas para hacer una consulta. Por ejemplo, teniendo la siguiente tabla:
| Product | ColumnA | ColumnB | ColumnC | 
| Alpha | 1 | 5 | 7 | 
| Bravo | 3 | 4 | 2 | 
Siempre podemos hacerlo manualmente:
SELECT row, CASE WHEN ColumnC < ColumnA AND ColumnB < ColumnA THEN ColumnA
                 WHEN ColumnA < ColumnB AND ColumnC < ColumnB THEN ColumnB
                 WHEN ColumnA < ColumnC AND ColumnB < ColumnC THEN ColumnC
  FROM tableY esto nos daría lo siguiente
alpha, 7
bravo, 4Pero claro, si tenemos catorce mil columnas o incluso el resultado proviene de un cálculo, tal vez no nos sea tan sencillo. Por ejemplo, pongamos que tenemos que multiplicar por 1.21 para sumar el IVA a los productos
SELECT row, CASE WHEN ColumnC < ColumnA AND ColumnB < ColumnA THEN ColumnA
                 WHEN ColumnA < ColumnB AND ColumnC < ColumnB THEN ColumnB
                 WHEN ColumnA < ColumnC AND ColumnB < ColumnC THEN ColumnC
  FROM (SELECT ColumnA * 1.21 as ColumnA, 
               ColumnB * 1.21 as ColumnB,
               ColumnC * 1.21 as ColumnC
          FROM table) aLa opción B es utilizarlo de la siguiente forma
SELECT row, (SELECT max(res) 
               FROM (VALUES (t.ColumnA * 1.21), 
                            (t.ColumnB * 1.21),
                            (t.ColumnC * 1.21)
                    ) as MyValue(res))
  FROM table t;Y esto nos daría lo mismos resultados, haciendo una consulta mucho mas fácil de mantener. (Obviamente, lo primero sería optimizar el valor del IVA y que fuese una variable en vez de algo hardcoded, pero eso os lo dejo a vosotros)