Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-10-2018
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Thumbs up Consulta dinamica

A ver si soy capaz de explicarme. Tengo una tabla en la que hay, entre otros muchos, estos registros:

Código SQL [-]
GRUPO1 GRUPO2 DATO1 DATO2
93      2      284   6498
95      2       38    456
99      2       90   2185
99      4        1     10
Bien. Necesitaría montar un query para generar un informe de forma que los resultados para cada valor de GRUPO1 aparecieran en la misma línea. Algo así:
Código SQL [-]
GRUPO1 GRUPO2 DATO1 DATO2  ... GRUPOx DATO1x DATO2x
93         2   284   6498
95         2    38    456
99         2    90    2185 ...    4      1      10
(haceros una idea porque no encuentro la forma de encolumnarlos bien )
He estado probando con CASE...WHEN, con UNION, etc., pero no se me ocurre como montarlo para que me salgan tantas columnas como valores distintos hay en GRUPO2

NOTA (Germán Estévez -Neftalí-): Como truco, si usáis la etiqueta de SQL en lugar de QUOTE, se mantienen los espacios introducidos.

Última edición por Neftali [Germán.Estévez] fecha: 19-10-2018 a las 14:46:18. Razón: Con el TAG SQL se mnantienen los espacios y se ve mejor
Responder Con Cita
  #2  
Antiguo 19-10-2018
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Angel.Matilla Ver Mensaje
(haceros una idea porque no encuentro la forma de encolumnarlos bien )
Mira a ver si así es como querías:

Código:
GRUPO1   GRUPO2   DATO1   DATO2
  93       2       284     6498
  95       2        38      456
  99       2        90     2185
  99       4         1       10

Código:
GRUPO1  GRUPO2  DATO1  DATO2  ... GRUPOx  DATO1x  DATO2x
  93      2      284   6498
  95      2       38    456
  99      2       90   2185   ...   4        1       10
Para que quedenn bien alineadas las columnas, escribe todo en un editor de texto y luego encuádralo en etiquetas [code].

// Saludos
Responder Con Cita
  #3  
Antiguo 19-10-2018
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.265
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Veo que Román se ha adelantado... o no...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 19-10-2018
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Vale... ¡Gracias a los dos! Pero lo de la presentación es el menor de los problemas.
Responder Con Cita
  #5  
Antiguo 19-10-2018
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
He estado dando vueltas por todos lados (es una forma de hablar ) y he encontrado varias respuestas que apuntan en la dirección que quiero ir; casi todas ellas hablan de las CTE. Encontré una sugerencia de fjcg02 que la verdad sea dicha me ha gustado (con un procedimiento) pero tengo que estudiarla a fondo. Antes de implementar nada nuevo he estado probando otra sugerencias que vienen en ese hilo, pero la que más parece aproximarse a mi problema o no estoy desarrollándola bien o no acabo de entenderla.


La tabla tiene, entre otros muchos, estas dos filas:


Estoy usando este código:
Código SQL [-]
WITH Pivote AS (SELECT DISTINCT Estadistica, Grupo1, Grupo2, Grupo3, Dato1 FROM Estadistica)
SELECT A.Grupo1, A.Grupo2, B.Grupo3, B.Dato1, C.Grupo3, C.Dato1
  FROM Estadistica A
  LEFT JOIN Pivote B ON A.Estadistica = B.Estadistica AND A.Grupo1 = B.Grupo1 AND A.Grupo2 = B.Grupo2 AND B.Grupo3 = 3
  LEFT JOIN Pivote C ON A.Estadistica = C.Estadistica AND A.Grupo1 = C.Grupo1 AND A.Grupo2 = C.Grupo2 AND C.Grupo3 = 4
 WHERE SUBSTRING(A.Estadistica FROM 1 FOR 1) = :Estadistica 
  ORDER BY 1, 2
Todos los campos de la tabla son del tipo INTEGER. Al ejecutar esa consulta, entre otras muchas filas, me devuelve esto:


Me devuelve dos filas iguales, y lo hace siempre que para un valor único de la combinación Grupo1-Grupo2 hay más de un posible valor en Grupo3 y es evidente que lo que yo busco es que me devuelva una única fila. ¿alguna sugerencia?

Última edición por Casimiro Notevi fecha: 19-10-2018 a las 20:01:57. Razón: Etiquetas sql
Responder Con Cita
  #6  
Antiguo 19-10-2018
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Aqui le pegaste a una de las diferentes limitaciones de SQL. Es pesimo para generar columnas dinamicamente.

Hay una posibilidad y es utilizar LIST:

http://www.developeando.com/2009/02/...-function.html
__________________
El malabarista.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consulta dinamica CoCaInE Varios 4 31-07-2012 21:32:07
problemas con consulta dinamica oktubre Conexión con bases de datos 3 16-04-2011 23:52:18
Consulta de SQL Dinamica pmpisani Tablas planas 1 04-10-2007 17:05:57
Grilla dinamica walito Gráficos 1 09-06-2007 12:16:35
Consulta dinámica en procedimiento almacenado Ivanzinho Firebird e Interbase 2 24-10-2005 15:26:27


La franja horaria es GMT +2. Ahora son las 19:34:52.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi