![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
![]() 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 ... 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 ... 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. |
#2
|
||||
|
||||
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.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
||||
|
||||
¿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 |
#4
|
||||
|
||||
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 - |
![]() |
|
|
![]() |
||||
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 |
![]() |
|