Cálculo de valores máximos URGENTE

C?r
01 de Septiembre del 2005
Buenas

Mi problema es el siguiente, poseo una tabla con un único registro con 170 campos y necesito calcular el máximo de todos ellos. he intentado hacerlo mediante un pl/sql que crea dinámicamente la consulta del tipo:

'select to_char(decode(sign(campo1-campo2),campo1,decode(sign(campo2-campo3),1,campo2.....) from tabla'.

el problema está en que oracle no me admite variables cuyo número de caracteres supere los 999 y ésta los supera con creces.

Mi pregunta es la siguiente:

-existe una función del tipo max(campo1,campo2,...) para calcular el máximo o bien existe alguna forma de trasponer la tabla para que interprete los valores de campos como de la misma columna?.

Muchas gracias por anticipado y un cordial saludo,

César

Pablo Ponte Miserendino
01 de Septiembre del 2005
No, que yo sepa no existe una funciòn de esas caracterìsticas...lo que podes hacer es una consulta con UNIONS de los campos:

Select campo1 cam
from tabla
union
select campo2 cam
from tabla
union
....
select campoN
from tabla

a esto lo encerras ente parentesis y buscas el màximo:

Select max(cam) from (
select ...
uinon...
union...
)

obviamente esto solo funcionarà si todos los campos son del mismo tipo...

para crear esta consulta dinàmicamente puedes hacer:

SELECT 'select '||column_name||' as campo from '||table_name||' Union'||chr(13)
FROM user_tab_columns
WHERE table_name = NOMBRE_TABLA

a esto le borrras el ùltimo union y lo metes en una subquery como te dije anteriormente...

Espero que te sirva

Salu2

Carlos
01 de Septiembre del 2005
Mírate la función GREATEST en 'Oracle9 i SQL Reference'.

Un saludo.

Carlos.