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 Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-09-2015
Avatar de rretamar
[rretamar] rretamar is offline
Miembro Premium
 
Registrado: ago 2006
Ubicación: San Francisco, Córdoba, Argentina
Posts: 1.168
Poder: 20
rretamar Va camino a la famarretamar Va camino a la fama
Question Totales...pero en columnas

Hola.
Una consulta para los más conocedores de SQL. Supongamos que tengo la siguiente tabla:

ID es un número único que identifica a un estudio (por ejemplo ecografías. ecografía 1, 2, 3, etc). Anatomía es un número que identifica el lugar del cuerpo donde se hace el estudio (por ejemplo: 1=abdomen, 2=hombro, 3=cuello, etc. etc.)

Entonces a medida que hacemos estudios, la tabla se va poblando de una forma como esta, nada raro:

Código:
ID   Anatomia 
1     4
2     2           
3     2
4     5
5     3
...
De esta manera es muy fácil (usando group by) hacer un "ranking" de anatomías, para saber que tipo de zonas son las que más estudios tuvieron.

Pero un día el médico ecografista dice: cuidadín, que en una sola sesión al paciente se le pueden hacer hasta un máximo de cinco ecografías en zonas distintas.

Entonces la estructura de la tabla se hace así:

Código:
ID  Anatomia1  Anatomia2  Anatomia3  Anatomia4  Anatomia5
1   2              3
2   6
3   1              3               2              5
4   2   
...
Lo que permite que en un único registro se puedan ingresar varias anatomías para un mismo estudio.

En este caso, cada registro (que representa una sesión de escografía, guarda los datos de hasta cinco anatomías)

El problema en este caso es el agrupamiento, ya que hasta donde tengo entendido, no puedo hacer un group-by si los datos están dispuestos de esa forma. Un solución es crear una tabla temporal similar a la primera...volcando los datos de la segunda....y recién ahí calcular el "ranking" de anatomías.

¿ Se les ocurre alguna idea mejor que crear una tabla temporal ?.

Saludos !
__________________
Lazarus Codetyphon : Desarrollo de aplicaciones Object Pascal, libre y multiplataforma.
Responder Con Cita
  #2  
Antiguo 25-09-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Si no te he entendido mal, lo que necesitas es pasar "filas a columnas", haz una búsqueda por "pivot", creo que esa es la solución.
Responder Con Cita
  #3  
Antiguo 25-09-2015
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
¿Y si el técnico les dice que pueden ser cinco, o siete o diez estudios? Yo creo que puedes plantear una tabla con dos campos (sesionId, anatomia). Cada registro correspondería a una sóla sesión y tu código verificaría que no se inserten más registros para cada sesionId de los qe indique el técnico. El campo sesionId apuntaría a una tabla con la infromación que requieras de cada sesión: paciente, fecha, etc.

De esta manera puedes usar lo que ya tenías con el group by.

// Saludos
Responder Con Cita
  #4  
Antiguo 26-09-2015
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Mira a ver este hilo.

http://clubdelphi.com/foros/showthre...formadas+pivot

La procedure devuelve la select que te hace lo que necesitas.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Necesito guardar datos en txt pero en columnas parejas Peterman Varios 4 09-09-2007 18:38:44
Conectar una db con otra pero estando en un pc diferente pero en red solram MySQL 0 04-07-2007 22:41:32
Totales en informe Asshole Impresión 1 16-06-2005 15:33:05
Totales con FreeReports brandolin Impresión 0 28-08-2004 07:13:37
Campo totales R.Rodriguez Tablas planas 1 21-05-2004 08:28:45


La franja horaria es GMT +2. Ahora son las 07:41:56.


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