jueves, 6 de enero de 2011

SQL SERVER - Encontrar maximo o minimo valor de entre varias columnas

Este post sirve para mostrar varias de las cosas nuevas que trajo SQL SERVER 2008. Si alguien intentó hacer esta operación en SQL SERVER 2000, recordará que hacer esto era una proeza.
Ya no hablaremos sobre SQL SERVER 2000.
max_min_values
Para mostrar cómo encontramos el máximo o mínimo valor comparando varias columnas primeramente crearemos una tabla, pero sólo una variable tabla (otra cosa grande de SQL SERVER 2008) y le añadimos 5 filas de datos:
DECLARE 
@myTable TABLE (columnID INT , column1 INT, column2 INT, column3 INT, column4 VARCHAR(50)) 

INSERT INTO @myTable SELECT 1, 3341, 455, 576, 'abc'
INSERT INTO @myTable SELECT 2, 354, 6552, 354, 'cde'
INSERT INTO @myTable SELECT 3, 566, 3434, 4545, 'efg'
INSERT INTO @myTable SELECT 4, 6783, 445, 578, 'ghi'
INSERT INTO @myTable SELECT 5, 7877, 9994, 666, 'ijk'

Seguimos. Luego construímos la consulta añadiendo las columnas que deseamos que participen en la operación, en este caso column1, column2, column3:

SELECT ( 
SELECT MAX(columnx) FROM ( VALUES(column1),(column2),(column3) ) AS UNIQUECOLUMN(columnx)
)  AS Maximun
FROM @myTable


El resultado será idéntico a la imagen de arriba.

Eso es todo. Espero que les sea de utilidad ;)

1 comentario:

Unknown dijo...

Buenísimo! me saco de un apuro.

Gracias