una transponer multiple filas ejemplo convertir concatenar columns columnas columna 10g sql oracle oracle-sqldeveloper oracle8i

multiple - sql transponer columnas a filas



Oracle: seleccione el valor máximo de diferentes columnas de la misma fila (2)

Teniendo en cuenta estos datos de prueba ...

SQL> select * 2 from your_table 3 / NAME M1 M2 M3 M4 ---- ---------- ---------- ---------- ---------- A 1 2 3 4 B 6 3 4 5 C 1 5 2 1 SQL>

... una simple llamada GREATEST () dará el resultado deseado:

SQL> select name 2 , greatest(m1,m2,m3,m4) 3 from your_table 4 / NAME GREATEST(M1,M2,M3,M4) ---- --------------------- A 4 B 6 C 5 SQL>

Toda la pregunta está más o menos en el título. Para cada fila de la tabla, me gustaría seleccionar el máximo de un subconjunto de columnas.

Por ejemplo, de esta tabla.

name m1 m2 m3 m4 A 1 2 3 4 B 6 3 4 5 C 1 5 2 1

el resultado seria

name max A 4 B 6 C 5

La consulta debe ser compatible con Oracle 8i.


Use GREATEST pero también maneje posibles NULL

SELECT name, GREATEST(NVL(m1,0), NVL(m2,0), NVL(m3,0), NVL(m4,0)) AS "Max" FROM yourtable

Entrada:

name m1 m2 m3 m4 A 1 2 3 4 B 6 3 4 5 C 1 5 2 1

Salida:

NAME Max A 4 B 6 C 5

Fiddle SQL: http://sqlfiddle.com/#!4/ae268/7/0

Entrada:

name m1 m2 m3 m4 A 1 2 3 null B 6 null 4 5 C 1 5 2 1

Salida:

NAME Max A 3 B 6 C 5

Fiddle de SQL: http://sqlfiddle.com/#!4/b1c46/1/0