Ir al contenido


Foto

[RESUELTO] Mostrar 2 veces un registro


  • Por favor identifícate para responder
13 respuestas en este tema

#1 SkyNet

SkyNet

    Member

  • Miembros
  • PipPip
  • 19 mensajes

Escrito 08 marzo 2010 - 05:23

Hola!

Tego una gran duda. Les explico tengo esta consulta



sql
  1. SELECT A.Grado, A.Nombre_Completo, G.Grupo, A.F_Alta, A.F_Baja,
  2. CASE A.Movimiento || A.Aprobado
  3. WHEN  'A1' THEN 'ALTA'
  4. WHEN  'B0' THEN 'BAJA'
  5. WHEN  'B1' THEN 'BAJA'
  6. WHEN  'I0' THEN 'REPROBADO'
  7. WHEN  'A0' THEN 'REPROBADO'
  8. END  AS Movi
  9. FROM Alumnos A INNER JOIN Grupo G ON A.CVE_GRUPO = G.CVE_GRUPO
  10. WHERE A.Movimiento || A.Aprobado <> 'I1'
  11. AND A.CICLO_ACTUAL = '2009-2010'
  12. AND G.CVE_GRUPO IN (SELECT CVE_GRUPO FROM Grupo WHERE CVE_ESCUELA = 2 AND Ciclo = '2009-2010')
  13. ORDER BY  A.Grado, Movi,  G.Grupo,  A.nombre_completo


la consulta funciona bien lo que quiero hacer es que un registro se me muestre 2 veces 
una seria como reprobado que es en este caso
When  'A0' Then 'REPROBADO'
y en otra como alta
When  'A0' Then 'ALTA'
Ya lo intente y ps no lo hace!

La gran duda es se puede hacer con un query ??
  • 0

#2 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 08 marzo 2010 - 05:31

Hola amigo SkyNet...

Déjame comprender, deseas que cuando se cumpla una condición, haga X cosa y que cuando se cumpla esa misma condición haga Y cosa ?... bajo qué criterio haría la cosa X y bajo cuál la Y ?

Saludox ! :D
  • 0

#3 SkyNet

SkyNet

    Member

  • Miembros
  • PipPip
  • 19 mensajes

Escrito 08 marzo 2010 - 06:06

Si Fenareth  los registro que cumplan esta condicion

When  'A0' Then

quiero que se muestre 2 veces es decir una ves como "ALTA" otra como "REPROBADO"
  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 08 marzo 2010 - 06:14

Si Fenareth  los registro que cumplan esta condicion

When  'A0' Then

quiero que se muestre 2 veces es decir una ves como "ALTA" otra como "REPROBADO"


Hola Jhovanny,

Y porque deseas poner dos lineas en esa clave compuesta Movimiento-Aprobado.

Que pasa con Baja Aprobado (B1) y Reprobado (B0).

Salud OS
  • 0

#5 SkyNet

SkyNet

    Member

  • Miembros
  • PipPip
  • 19 mensajes

Escrito 08 marzo 2010 - 06:27

Con las BAJAS es un caso diferente porque cuando es una B0 o B1 no importa si es reprobado o Aprodabo porque se podria decir que le registro deja de existir
  • 0

#6 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 08 marzo 2010 - 06:54

Con las BAJAS es un caso diferente porque cuando es una B0 o B1 no importa si es reprobado o Aprodabo porque se podria decir que le registro deja de existir


Pero, en que caso puede un alumno darse de alta con materias reprobadas ?

Salud OS
  • 0

#7 Asis

Asis

    Newbie

  • Miembros
  • Pip
  • 3 mensajes

Escrito 08 marzo 2010 - 07:05

Déjame ver si entendí bien.

Si tomo un ejemplo de calificaciones, los alumnos que se dan de alta, también pueden ir reprobando. Así que tendrías que mostrar en tu reporte al mismo nombre en diferente renglón.

No es que las altas se ingresen con materias reprobadas.

Y las bajas, al ser bajas, ya no importa si están aprobados o reprobados. Son estadística únicamente.

¿Es así?
  • 0

#8 SkyNet

SkyNet

    Member

  • Miembros
  • PipPip
  • 19 mensajes

Escrito 08 marzo 2010 - 07:08

Déjame ver si entendí bien.

Si tomo un ejemplo de calificaciones, los alumnos que se dan de alta, también pueden ir reprobando. Así que tendrías que mostrar en tu reporte al mismo nombre en diferente renglón.

No es que las altas se ingresen con materias reprobadas.

Y las bajas, al ser bajas, ya no importa si están aprobados o reprobados. Son estadística únicamente.

¿Es así?


Si, es por eso que quiero que aparesca 2 veces un registro
  • 0

#9 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 08 marzo 2010 - 07:33

Talvez te pueda servir hacer un Group By por los campos que deseas.

Eso es segun lo que entiendo, porque la verdad es que no entiendo muy bien esto:

When  'A0' Then 'REPROBADO'
y en otra como alta
When  'A0' Then 'ALTA'




  • 0

#10 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 09 marzo 2010 - 04:13

Hola.

Creo que esto es la consulta que buscas (como puedes ver hago tu consulta para que salga una vez el registro, y después le añado el resultado de una segunda consulta, mostrando solo los A0, donde aparecen por segunda vez, en esta ocasión como 'ALTA').



sql
  1.   SELECT A.Grado, A.Nombre_Completo, G.Grupo, A.F_Alta, A.F_Baja,
  2.   CASE A.Movimiento || A.Aprobado
  3.   WHEN  'A1' THEN 'ALTA'
  4.   WHEN  'B0' THEN 'BAJA'
  5.   WHEN  'B1' THEN 'BAJA'
  6.   WHEN  'I0' THEN 'REPROBADO'
  7.   WHEN  'A0' THEN 'REPROBADO'
  8.   END  AS Movi
  9.   FROM Alumnos A INNER JOIN Grupo G ON A.CVE_GRUPO = G.CVE_GRUPO
  10.   WHERE A.Movimiento || A.Aprobado <> 'I1'
  11.   AND A.CICLO_ACTUAL = '2009-2010'
  12.   AND G.CVE_GRUPO IN (SELECT CVE_GRUPO FROM Grupo WHERE CVE_ESCUELA = 2 AND Ciclo = '2009-2010')
  13.   ORDER BY  A.Grado, Movi,  G.Grupo,  A.nombre_completo
  14. UNION
  15.   SELECT A.Grado, A.Nombre_Completo, G.Grupo, A.F_Alta, A.F_Baja,
  16.               'ALTA' AS Movi
  17.   FROM Alumnos A INNER JOIN Grupo G ON A.CVE_GRUPO = G.CVE_GRUPO
  18.   WHERE A.Movimiento || A.Aprobado = 'A0'
  19.   AND A.CICLO_ACTUAL = '2009-2010'
  20.   AND G.CVE_GRUPO IN (SELECT CVE_GRUPO FROM Grupo WHERE CVE_ESCUELA = 2 AND Ciclo = '2009-2010')
  21.   ORDER BY  A.Grado, Movi,  G.Grupo,  A.nombre_completo



Saludos.
  • 0

#11 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 09 marzo 2010 - 04:14

NOTA: Habría que probarlo, pero creo que en un UNION el ORDER BY solo hay que ponerlo en la última consulta.
  • 0

#12 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 09 marzo 2010 - 09:55

Hola

Efectivamente, así va a funcionar, los where están bien, lo único que hay que quitar es el primer "ORDER BY"



sql
  1.   SELECT A.Grado, A.Nombre_Completo, G.Grupo, A.F_Alta, A.F_Baja,
  2.   CASE A.Movimiento || A.Aprobado
  3.   WHEN  'A1' THEN 'ALTA'
  4.   WHEN  'B0' THEN 'BAJA'
  5.   WHEN  'B1' THEN 'BAJA'
  6.   WHEN  'I0' THEN 'REPROBADO'
  7.   WHEN  'A0' THEN 'REPROBADO'
  8.   END  AS Movi
  9.   FROM Alumnos A INNER JOIN Grupo G ON A.CVE_GRUPO = G.CVE_GRUPO
  10.   WHERE A.Movimiento || A.Aprobado <> 'I1'
  11.   AND A.CICLO_ACTUAL = '2009-2010'
  12.   AND G.CVE_GRUPO IN (SELECT CVE_GRUPO FROM Grupo WHERE CVE_ESCUELA = 2 AND Ciclo = '2009-2010')
  13.  
  14. UNION
  15.  
  16.   SELECT A.Grado, A.Nombre_Completo, G.Grupo, A.F_Alta, A.F_Baja,
  17.               'ALTA' AS Movi
  18.   FROM Alumnos A INNER JOIN Grupo G ON A.CVE_GRUPO = G.CVE_GRUPO
  19.   WHERE A.Movimiento || A.Aprobado = 'A0'
  20.   AND A.CICLO_ACTUAL = '2009-2010'
  21.   AND G.CVE_GRUPO IN (SELECT CVE_GRUPO FROM Grupo WHERE CVE_ESCUELA = 2 AND Ciclo = '2009-2010')
  22.  
  23.   ORDER BY  A.Grado, Movi,  G.Grupo,  A.nombre_completo



Ya he probado con una consuta similar. ;)

Salud OS
  • 0

#13 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 09 marzo 2010 - 10:36

Solo para complementar y/o corregir el ORDER BY, cuando se utiliza en conjunto con la clausula UNION no se puede colocar el nombre del campo sino su indice, al menos esto es en Firebird, de tal suerte que habrá que cambiar esto:



sql
  1.   ORDER BY  A.Grado, Movi,  G.Grupo,  A.nombre_completo



por esto



sql
  1.   ORDER BY  1, 6, 3, 2



Salud OS
  • 0

#14 SkyNet

SkyNet

    Member

  • Miembros
  • PipPip
  • 19 mensajes

Escrito 09 marzo 2010 - 10:44

listo es justamente lo ke queria hacer gracias por todo
(y)
  • 0




IP.Board spam blocked by CleanTalk.