![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
|||
|
|||
|
Calentando motores ...
fjcg02:
Muy bien ... ahora ya nos estamos entendiendo ... bueno pues manos a lo obra: Lo primero que hay que notar es que solo tienes una solo tabla, por lo que de ahí vamos a obtener el pivote ... y del pivote vamos a obtener nuestro resultado final. Por otro lado, es mejor empezar con un caso pequeño (donde los conceptos son fijos). Posteriormente nos movemos hacia un caso más difícil, ¿vale?. Corre esta sentencia primero (este sería nuestro pivote). Sean benévolos conmigo a lo mejor tengo errores en el nombre de un tabla/campo, etc, etc. Necesito que me digas si funciona correctamente dicha sentencia.
Despues si todo esto se ejecutó sin errores (doy por hecho que así es), creo mi tabla principal donde aparecerán los conceptos.
Espero que esto despeje un poco sus dudas. Porqué decimos que esta forma de solucionar el problema es sumamente eficiente, porque la tabla "pivote" solo se ejecuta una sola vez, sin importar cuantos conceptos se agreguen después. Otra cosa que hay que hacer notar es el uso correcto de índices. En este caso no sé si haya indices, sino no los hay, la sentencia pivote tendrá que recorrer toda la tabla (aunque solo sea una solo vez). Saludos, Gerardo Suárez Trejo |
|
#2
|
||||
|
||||
|
La verdad es que las CTE son interesantes, no las conocía (aún sigo con Firebird 2.0). Pero no parece que sirvan para solventar el problema que tenemos, puesto que al final, con los datos de la CTE acabas haciendo otra consulta, y esa no puede tener un número variable de columnas. Así que las CTE no parecen una alternativa al PIVOT. Al menos no parecen una alternativa mejor que una simple consulta con subconsultas o CASE's.
En el caso de que tengamos un número variable de columnas, sigo sin ver otra solución que la de construir dinámicamente la consulta. Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
|
#3
|
||||
|
||||
|
Hola,
gracias por responder. He de decir que de la sentencia que ejecuto, me sorprenden dos cosas. 1.- La respuesta tarda muchísimo. 2.- EL resultado no es el que deseo. Me repite algunas poblaciones, por lo que no puedo dar por bueno el resultado. la sentencia es la que me has comentado, Gallosuarez
Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
|
#4
|
|||
|
|||
|
Cita:
1.- ¿Cual es el plan que está utilizando la sentencia? ¿te dice si utiliza índices? 2.- No, veo porqué la sentencia podría repetir algunas poblaciones, en todo caso me imagino que el problema puede ser que no haya consistencia en los datos que contiene tu tabla, ¿me explico? ¿Podrías subir una archivo .zip que contenga las sentencias INSERT de dicha tabla (al menos los campos que nos interesan en este ejercicio? (solo si puedes, claro), me gustaría echarle un vistazo a esos datos. Por otro lado, veo que tu tabla no está normalizada (no digo que sea malo o bueno, todo depende de la particularidades y necesidades de cada proyecto) ¿Existe alguna razón de tu parte para que hayas diseñado así dicha tabla? Estoy en espera de tu respuesta ... Saludos, Gerardo Suárez Trejo |
|
#5
|
|||
|
|||
|
Perdon si es que no estoy en el tema
Pero existen unos componentes llamados Devexpress (PivotGrid) , con eso tienes solucionados todos los problemas de este tipo Al menos a mi me ha funcionado , no tienes que hacer nada complicado solo la simple consulta y el componente hace al resto
__________________
IVAND |
|
#6
|
||||
|
||||
|
Hola,
perdonad que no haya respondido antes. Todos los puntos que indica GalloSuarez son importantes a la hora de ejecutar la consulta. A saber, índices, normalización de tablas, .... Independientemente de todos ellos, bajo mi modesta opinión, las dos consultas deberían ser de parecido rendimiento, segundo arriba segundo abajo, ya que usan el mismo origen de datos para extraer los resultados. Igual de optimizados o sin optimizar. No sé si tendré tiempo para proporcionaros más datos en cuanto al plan de ejecución, ... , intentaré sacarlos. No os puedo proporcionar los registros de la BBDD ya que son reales, de producción. Respecto a los componentes de Devexpress-PivotGrid, si alguien está dispuesto a financiar el proyecto, pues podría proporcionarme una licencia legal para que pueda utilizarlos ![]() ![]() Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
|
#7
|
||||
|
||||
|
Cita:
http://sourceforge.net/projects/fxds/ NOTA: ¿ Puedes decir porqué quieres usar CTE's ?, para este caso concreto sigo sin ver ninguna ventaja respecto a las subconsultas (y para el optimizador del motor de Firebird está claro que le resulta bastante más sencillo optimizar las subconsultas). Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Consulta con Filas en Columnas | afxe | SQL | 3 | 30-01-2011 15:52:18 |
| Consulta de Filas y Columnas | mjjj | SQL | 1 | 19-02-2010 23:24:36 |
| Filas y Columnas | pmcastilla | Varios | 2 | 07-12-2007 21:22:01 |
| ocultar filas o columnas | karla | Servers | 1 | 10-08-2006 21:03:18 |
| Filas a columnas | nightynvid | MS SQL Server | 0 | 31-05-2006 17:22:44 |
|