En Oracle y MySQL, ¿cómo puedo crear una función que tome un número indefinido de parámetros para que se pueda llamar como GREATEST (value1, value2, ...)?Número indefinido de argumentos para las funciones definidas por el usuario de SQL?
Comparar dos valores para un cierto estándar es bastante fácil, pero pasar el "mayor" valor a otra comparación es lo que parece que no me funciona en SQL.
Gracias!
Editar (después del comentario de Mike a continuación): Estoy buscando una solución para comparar varias columnas. En términos concretos, mi pregunta es cómo implementar GREATEST() como un UDF. El siguiente código compara tres columnas.
SELECT CASE WHEN CASE WHEN col_1 < col_2 THEN col_2
ELSE col_1 END < col_3 THEN col_3
ELSE CASE WHEN col_1 < col_2 THEN col_2
ELSE col_1 END END AS greatest
FROM figures;
Aparentemente, esto no escala tan bien. Será mucho más útil tener una función general que aplique el mismo método de comparación una y otra vez a una lista de valores.
Por SQL me refiero a cualquier producto de base de datos SQL, pero yo prefiero una solución que funciona en Oracle o MySQL
Es esto lo mismo que - seleccionar * from, orden por x desc/asc El valor máximo debe ser el primero/el último? Incluso en XSLt, ¿solo ordeno las cosas para obtener el valor máximo? – Mike
Probablemente se refiere a SQL Server - SQL (sin más calificación) se refiere a un lenguaje, implementado en diversos grados por varios productos diferentes, y cada uno con sus propias extensiones únicas también. –
Aquí hay una manera de escalar mucho mejor la declaración 'case '. http://stackoverflow.com/questions/7995945/how-to-i-modify-this-t-sql-query-to-return-the-maximum-value-for-different-colum/7996068#7996068 –