Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-04-2004
lledesma lledesma is offline
Miembro
 
Registrado: abr 2004
Posts: 43
Poder: 0
lledesma Va por buen camino
Question Consulta para reportes

Hola a todos:

Mi consulta es la siguiente:
Tengo una tabla cuya estructura es la siguiente:

Idcliente detalle importe
1 concepto1 10
1 concepto2 20
1 concepto3 15
1 concepto4 30
2 concepto2 15
2 concepto3 25


y necesito poder mostrar (en pantalla o a través de un reporte) esta tabla como sigue:

idcliente concepto1 concepto2 concepto3 concepto4
1 10 20 15 30
2 15 25

es decir, poder armarla en tiempo de ejecución.

Estoy utilizando interbase como motor de base de datos. Desde ya muchas gracias.
__________________
Atentamente
Luis

Última edición por lledesma fecha: 14-04-2004 a las 22:18:51. Razón: en la vista final no estan claras las tablas
Responder Con Cita
  #2  
Antiguo 15-04-2004
Avatar de Carmelo Cash
Carmelo Cash Carmelo Cash is offline
Miembro
 
Registrado: jul 2003
Ubicación: Buenos Aires
Posts: 261
Poder: 21
Carmelo Cash Va por buen camino
Probá con esta, pero creo que en tu ejemplo faltan otros campos necesarios para identificar una transaccion (ej. Nro. de Factura)

Select
Tr.IdCliente as Cliente
, (Select Sum(TD.Importe) From TransactionDetails TD Where TD.IdCliente= TR.IdCliente And TD.Item_Code = 1 ) As Codigo1
, (Select Sum(TD.Importe) From TransactionDetails TD Where TD.IdCliente = TR.IdCliente And TD.Item_Code = 2 ) As Codigo2
, (Select Sum(TD.Importe) From TransactionDetails TD Where TD.IdCliente = TR.IdCliente And TD.Item_Code = 3 ) As Codigo3
, (Select Sum(TD.Importe) From TransactionDetails TD Where TD.IdCliente = TR.IdCliente And TD.Item_Code = 4 ) As Codigo4

From TransactionDetails TR


También podés reemplazar "And TD.Item_Code = 4 " por "And TD.Item_Code In (2,5)" y obtener en una columna la suma de varios conceptos.

Suerte
Responder Con Cita
  #3  
Antiguo 15-04-2004
lledesma lledesma is offline
Miembro
 
Registrado: abr 2004
Posts: 43
Poder: 0
lledesma Va por buen camino
Te agradezco mucho por contestar. De todos modos creo que no fui muy claro en el ejemplo, en realidad es una sola tabla que necesito armarla en forma de matriz. la estructura que utilicé es a modo de ejemplo. No tengo que realizar ninguna operación solo acomodar los datos de otro modo.

idcliente..Detalle....... Numero
1...........concepto1.....10
1...........concepto2.....15
1...........concepton.....##
2...........Concepto1.....40

idcliente........Concepto1.......Concepto2.........concepto n
1....................10.................15.....................##
2....................40

* Los puntos los utilizo para tabular (soy nuevo y no se como hacerlo).

la cantidad de registros no lo conozco, pueden ir de 1 a n para un mismo cliente, por eso es que necesito armar la consulta en tiempo de ejecución.

Se que soy complicado, pero en fin. Muchisimas Gracias.
__________________
Atentamente
Luis
Responder Con Cita
  #4  
Antiguo 15-04-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
En realidad el concepto de la consulta propuesta sirve para resolver este problema (se llaman consultas de referencias cruzadas).

Más o menos :

Código:
select distinct Recorrido.IdCliente
(select sum(Numero) from Tabla Concepto where Recorrido.IdCliente = Concepto.IdCliente and Concepto.Detalle = 'concepto1') as concepto1,
(select sum(Numero) from Tabla Concepto where Recorrido.IdCliente = Concepto.IdCliente and Concepto.Detalle = 'concepto2') as concepto2,
... 
(select sum(Numero) from Tabla Concepto where Recorrido.IdCliente = Concepto.IdCliente and Concepto.Detalle = 'concepton') as concepton
from Tabla Recorrido
Nota : He supuesto que un cliente puede tener más de una linea, para el mismo concepto. En cuyo caso los sumamos. Si estás seguro que eso nunca va a suceder, puedes quitar el sum.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).

Última edición por guillotmarc fecha: 15-04-2004 a las 22:29:29.
Responder Con Cita
  #5  
Antiguo 15-04-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
NOTA : Recorrido y Concepto són alias de la Tabla en que están los datos (la he llamado Tabla).
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #6  
Antiguo 15-04-2004
lledesma lledesma is offline
Miembro
 
Registrado: abr 2004
Posts: 43
Poder: 0
lledesma Va por buen camino
muchas gracias. Lo pruebo y te aviso
__________________
Atentamente
Luis
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 22:03:58.


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