![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
|||
|
|||
|
amerika111:
Lo sorprendente sería que dijeras que ese código te hubiera funcionado. Mira, no creo que estés entendiendo el concepto de CTE's (veo que, además de estar pésimamente implementado, el concepto no se está entendiendo). Por otro lado, en este mismo foro ya se había tratado este tema con anterioridad. El compañero fjcg02 mencionó entonces en aquella ocasión que utilizar CTE's no resolvía el problema si existían varios conceptos. Lo cual no es un problema, puesto que se resuelve utilizando bloques ejecutables (Execute Block). Que es mas o menos lo que él hace en dicho procedimiento almacenado, con la diferencia que el código resultante es sumamente robusto y eficiente (amen de ser una solución elegante). Otra cosa, el código completo se puede armar desde la misma aplicación (ventaja de hacerlo con Execute block). Bueno, hecha esta aclaración le digo a amerika111 que primero tiene que entender bien el concepto. Resolver su problema no debe de llevarse mucho tiempo. Saludos, Gerardo Suárez Trejo PD. Estoy creando tutoriales que tratan todas estas cuestiones ... espero pronto subirlos para haber si les puede ser útiles a alguien... saludos nuevamente ... |
|
#2
|
||||
|
||||
|
bbbbbbbbbbbbbbbbbbbbbbbbbb
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
|
#3
|
||||
|
||||
|
Llevo un rato intentando entender el WITH este del demonio, y no acabo de cogerle el punto ...
![]() ![]()
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
|
#4
|
||||
|
||||
|
En mi opinión os estáis complicando mucho. Solucionarlo con subconsultas normalmente es bastante sencillo (claro que solo se puede hacer cuando el nº de columnas está prefijado de antemano).
Sería algo del tipo :
Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
|
#5
|
|||
|
|||
|
no pues sigo en las mismas, ya hasta regañada sali,
trate de hacerlo con lo de CTE's pero nada no se como utilizar lo que me han comentado del case o la subconsulta ![]()
|
|
#6
|
|||
|
|||
|
|
#7
|
|||
|
|||
|
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 |
|
#8
|
||||
|
||||
|
Yo hago algo parecido y me toca que construirlo desde delphi, yo hago algo así como esto:
Donde el query QConceptos es el siguiente:
Todo esto lo hago sin comprobar, es solo para dar una idea de como lo hago.
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H" Última edición por RONPABLO fecha: 10-04-2011 a las 20:07:50. |
|
#9
|
||||
|
||||
|
Cita:
Viendo esta respuesta creo que combinándola con mi respuesta anterior podría también funcionar muy bien.
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H" |
|
#10
|
||||
|
||||
|
Cita:
Uso la version 2.0
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! |
|
#11
|
||||
|
||||
|
Hola de nuevo,
estoy haciendo unas pruebas, y la verdad, no me están convenciendo. A no ser que esté haciendo algo mal, y que agradecería que me lo indicarais si alguien lo sabe. Mi intención es sacar una consulta con las poblaciones y los estados civiles de los clientes. La tabla es de clientes, en donde hay id, nombre, población y estado civil. La tabla tiene 16.500 registros. Existen 4 estados civiles ,a saber: CASADO, SOLTERO, SIN DEF. y VIUDO ( tened en cuenta que no está en producción, son pruebas ).Una primera consulta sería
Respuesta perfecta, tiempo de consulta aprox 3 segundos. Utilizando WITH
Resultado inexacto. Me devuelve más de una fila por población, y datos un poco extraños. Tiempo de respuesta. Me deja el equipo cuajado un par de minutos al menos. Me da la sensación de que estoy haciendo mal la consulta. A ver si alguien me puede poner luz... Gracias
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
|
#12
|
||||
|
||||
|
Hola.
Si en tu primero consulta, sencilla, ya obtienes el resultado el resultado que estás buscando, y en un tiempo óptimo, ¿ porqué te quieres complicar la vida sacándolo mediante CTE's ?. NOTA: Para agilizar un poco más esa primera consulta, puedes añadir un índice por población (de esa forma facilitas la agrupación por ese campo). Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
|
#13
|
||||
|
||||
|
Cita:
estoy comparando la manera de obtener los datos, con la primera consulta ( que la creo dinámicamente con una procedure ) o con CTE's. La segunda opción me está dando un rendimiento muy pobre, de ahí mi consulta de si estoy haciendolo bien o no. Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
|
#14
|
||||
|
||||
|
Hola.
Cita:
Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
|
#15
|
|||
|
|||
|
Cita:
fjcg02 puedes poner la estructura de tus tablas (algo así como lo que hizo amerika111, en un archivo gpeg como el que ella subio). Después hacemos el ejercicio y verán que es muy fácil. El secreto está primero en programar la "tabla" que te servirá de pivote ... posteriormente lo único que tienes que hacer es llamarla las veces que necesites dependiendo de los "conceptos" que quieras que aparezcan en las columnas ... ¿me explico?. Saludos Gerardo Suárez Trejo Última edición por Gallosuarez fecha: 08-04-2011 a las 16:51:06. Razón: Corregir ... |
|
#16
|
||||
|
||||
|
Hola.
Cita:
![]() En este caso tan sencillo parece que recurrir a CTE's es como intentar matar mosquitos a cañonazos. Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). Última edición por guillotmarc fecha: 08-04-2011 a las 17:41:54. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Consulta con Filas en Columnas | afxe | SQL | 3 | 30-01-2011 14:52:18 |
| Consulta de Filas y Columnas | mjjj | SQL | 1 | 19-02-2010 22:24:36 |
| Filas y Columnas | pmcastilla | Varios | 2 | 07-12-2007 20:22:01 |
| ocultar filas o columnas | karla | Servers | 1 | 10-08-2006 20:03:18 |
| Filas a columnas | nightynvid | MS SQL Server | 0 | 31-05-2006 16:22:44 |
|