Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

¿Existe una función de grupo del tipo sum o avg que concatene?

Estas en el tema de ¿Existe una función de grupo del tipo sum o avg que concatene? en el foro de Oracle en Foros del Web. Pues lo que necesito es eso, para en una sola sentencia, mostrar en la primera columna los distinct de una columna separados por comas, más ...
  #1 (permalink)  
Antiguo 26/02/2008, 09:44
 
Fecha de Ingreso: abril-2007
Mensajes: 160
Antigüedad: 17 años
Puntos: 1
¿Existe una función de grupo del tipo sum o avg que concatene?

Pues lo que necesito es eso, para en una sola sentencia, mostrar en la primera columna los distinct de una columna separados por comas, más el resto de campos (en los cuales habrá group by, o avg u otras funciones de grupo).

Es decir, algo como

select <cadena> as campo1, campo2, avg(campo3) from tabla group by campo2

Con cadena igual a la concatenación de los posibles valores del campo A. Por ejemplo: '1,2,3'.


si por ejemplo tengo la tabla:

A____B____C
1.......a.......5
1.......b.......9
2.......a.......15
2.......b.......4
2.......c........12
3.......d........9

Querría que la consulta arrojase algo así:

COL.1_______COL.2________COL.3
1,2,3..................a..................avg(5,15 )
1,2,3..................b..................avg(9,4)
1,2,3..................c...................avg(12)
  #2 (permalink)  
Antiguo 26/02/2008, 12:28
 
Fecha de Ingreso: noviembre-2007
Ubicación: Argentina
Mensajes: 134
Antigüedad: 16 años, 5 meses
Puntos: 3
Re: ¿Existe una función de grupo del tipo sum o avg que concatene?

Programadornet:

Existe una funcion en 10g, que de un conjunto de valores te trae el maximo, pero creo que ese no es el problema mas grave, lo dificil es representar la info como tu quieres.

Es un realidad, que a medida que tienes mas informacion disponible y como DBA tienes que chequear que todo alla corrido bien de un dia para otro, es que necesitas hacer ciertos tableros resumidos de informacion y este que tu quieres hacer es uno muy bueno.

Te cuento que tuve que hacer algo parecido, necesitaba saber la cantidad de fallas agrupadas por tipo de falla, por dia y por maquina y a todo esto sumar las fallas totales y ordenarlas por este punto.

y salio algo como esto.

Código HTML:
                 FALLAS     FALLAS     FALLAS     FALLAS     FALLAS     FALLAS     FALLAS     FALLAS                              
PERIODO   MAQ    UNO        DOS        TRES       CUATRO     CINCO      SEIS       SIETE      OCHO            TOTAL               
--------- ------ ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------               
22 23 24  MAQU2         1   25 24 35   25 24 35                                                                 169               
22 23 24  MAQU4  11  5 10               9  5  9                                                                  49               
22 23 24  MAQU1   7  8  7               8  7  7                                                                  44               
22 23 24  MAQU6  14 16  7                                                                                        37               
22 23 24  MAQU3   8  6  6               5  6  5                                                                  36               
22 23 24  MAQU7   6  7  6               4  5  5                                                                  33

Tu lo ves y por ahi mucho no se entiende, pero los numeros 22 23 24 son los dias 22.02.2008, 23.02.2008 y 24.02.2008 respectivamente, luego viene el nombre de la maquina y cada columna siguiente son las respectivas falladas, pero que ocurre... las fallas son por dia, entonces tiene 3 columnas (implicitas) dentro de cada columna, se entiende ??? de esta manera podemos ver que la maquina 1 tuvo 8 fallas del tipo 3 durante el 22 de febrero. Al ultimo tiene un campo total con la suma de todas las fallas y de los 3 dias por maquina.

Lo mas importante es que esto es resultado de un solo select, que es lo que tu quieres, pero todos los select tienen una parte fija, trabajan con una cantidad finita de valores, sino deberiamos estar pensando en un procedimiento para generar recursividad y asi trabajar con todo el universo de elementos conocidos.

En este caso, yo elegi 3 fechas porque este reporte lo debia mandar por mail y mas columnas (implicitas) no podia mandar, pero eso puede cambiar, la cantidad de maquinas tambien puede cambiar, ahora..... los diferentes tipos de fallas son conocidos, yo se exactamente cuantas fallas hay, de ultima podes poner una novena falla por default, pero eso esta por verse... me explico como seria?

Finalizando... que elemento de tu universo de objetos es completamente conocido??? Que objecto se puede usar como "Pivot" para armar tu reporte?
Mientras mas informacion nos des, mas te podremos ayudar.

Saludos desde lo mas austral del mundo, Mario.
__________________
Y venció David al filisteo con honda y piedra; e hirió al filisteo y lo mató, sin tener David espada en su mano.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:44.