In Oracle e MySQL, come posso creare una funzione che richiede un numero indefinito di parametri in modo che possa essere chiamata GREATEST (valore1, valore2, ...)?Numero indefinito di argomenti per le funzioni definite dall'utente SQL?
Confrontare due valori con un determinato standard è piuttosto semplice ma passare il valore "maggiore" a un altro confronto è quello che non sembra funzionare in SQL.
Grazie!
Edit (dopo il commento di Mike sottostante): Sto cercando una soluzione per il confronto di più colonne. In termini concreti, la mia domanda è come implementare GREATEST() come UDF. Il seguente codice confronta tre colonne.
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;
Apparentemente, questo non è scalabile così bene. Sarà molto più utile avere una funzione generale che applica sempre lo stesso metodo di confronto a un elenco di valori.
da SQL intendo qualsiasi prodotto di database SQL, ma io preferisco una soluzione che funziona in Oracle o MySQL
È questo lo stesso - selezionare * da, ordina per x desc/asc Il valore massimo deve il primo/ultimo? Anche in XSLt, ho solo risolto le cose per ottenere il valore massimo? – Mike
Presumibilmente si intende SQL Server - SQL (senza ulteriore qualifica) si riferisce a un linguaggio, implementato a vari livelli da vari prodotti diversi, e ciascuno con le proprie estensioni univoche. –
Ecco un modo per ridimensionare molto meglio l'istruzione 'case'. http://stackoverflow.com/questions/7995945/how-to-i-modify-this-t-sql-query-to-return-the-maximum-value-for-different-colum/7996068#7996068 –