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 20-09-2012
MDante MDante is offline
Registrado
NULL
 
Registrado: sep 2012
Posts: 3
Poder: 0
MDante Va por buen camino
Por cierto olvide poner el query que me devuelve unos y ceros jeje


Código Delphi [-]
select distinct 
    clavealumno as clave,
    count( registroentrada) as entrada,
    count( case when cast (entrada as date) = '10/01/2010' then 0 end ) as dia1,
    count( case when cast (entrada as date) = '10/02/2010' then 0 end ) as dia2,
    count( case when cast (entrada as date) = '10/03/2010' then 0 end ) as dia3,
    count( case when cast (entrada as date) = '10/04/2010' then 0 end ) as dia4,
    count( case when cast (entrada as date) = '10/05/2010' then 0 end ) as dia5,
    count( case when cast (entrada as date) = '10/06/2010' then 0 end ) as dia6,
    count( case when cast (entrada as date) = '10/07/2010' then 0 end ) as dia7,
    count( case when cast (entrada as date) = '10/08/2010' then 0 end ) as dia8,
    count( case when cast (entrada as date) = '10/09/2010' then 0 end ) as dia9,
    count( case when cast (entrada as date) = '10/10/2010' then 0 end ) as dia10,
    count( case when cast (entrada as date) = '10/11/2010' then 0 end ) as dia11,
    count( case when cast (entrada as date) = '10/12/2010' then 0 end ) as dia12,
    count( case when cast (entrada as date) = '10/13/2010' then 0 end ) as dia13,
    count( case when cast (entrada as date) = '10/14/2010' then 0 end ) as dia14,
    count( case when cast (entrada as date) = '10/15/2010' then 0 end ) as dia15
from asistencia
where 
   (
      (clavealumno < 400)
   and 
      (registroentrada between cast('10/1/2010'as date) and cast('10/15/2010' as date))
   )
group by clavealumno
order by 1
Responder Con Cita
  #2  
Antiguo 20-09-2012
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
A ver, hombre de poca fe...

Vas a probar con esto, que significa básicamente lo siguiente...

Cogeme las fechas de entrada de los alumnos y haces esto
- si es el día uno, coges la hora y la conviertes a caracteres. Si no es día uno te quedas con el valor '00:00'. Te quedas con el valor más alto ( es decir, el que tenga un valor ).
- Así para cada día.

Además, me lo agrupas por alumno.

Código SQL [-]
select clavealumno as clave,
 max( case when extract(day from entrada) = 1 then cast(cast(entrada as time) as varchar(25)) else '00:00' end) as "DIA 1" ,
 max( case when extract(day from entrada) = 2 then cast(cast(entrada as time) as varchar(25)) else '00:00' end) as "DIA 2" ,
 max( case when extract(day from entrada) = 3 then cast(cast(entrada as time) as varchar(25)) else '00:00' end) as "DIA 3" ,
 max( case when extract(day from entrada) = 4 then cast(cast(entrada as time) as varchar(25)) else '00:00' end) as "DIA 4" ,
 max( case when extract(day from entrada) = 5 then cast(cast(entrada as time) as varchar(25)) else '00:00' end) as "DIA 5" ,
 max( case when extract(day from entrada) = 6 then cast(cast(entrada as time) as varchar(25)) else '00:00' end) as "DIA 6" ,
 max( case when extract(day from entrada) = 7 then cast(cast(entrada as time) as varchar(25)) else '00:00' end) as "DIA 7" ,
 max( case when extract(day from entrada) = 8 then cast(cast(entrada as time) as varchar(25)) else '00:00' end) as "DIA 8" ,
 max( case when extract(day from entrada) = 9 then cast(cast(entrada as time) as varchar(25)) else '00:00' end) as "DIA 9" ,
 max( case when extract(day from entrada) = 10 then cast(cast(entrada as time) as varchar(25)) else '00:00' end) as "DIA 10" ,
 max( case when extract(day from entrada) = 11 then cast(cast(entrada as time) as varchar(25)) else '00:00' end) as "DIA 11" ,
 max( case when extract(day from entrada) = 12 then cast(cast(entrada as time) as varchar(25)) else '00:00' end) as "DIA 12" ,
 max( case when extract(day from entrada) = 13 then cast(cast(entrada as time) as varchar(25)) else '00:00' end) as "DIA 13"

 from asistencia
where 
   (
      (clavealumno < 400)
   and 
      (registroentrada between cast('10/1/2010'as date) and cast('10/15/2010' as date))
   )
group by clavealumno

Lo pruebas, si funciona perfecto, pero te dejo de deberes que lo estudies y lo entiendas.

Nos informas, majete.

Saludos
PD: A ver si te ganas esa buena nota, aunque sea tarde.
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
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
Referencias Cruzadas GustavoCruz Firebird e Interbase 7 02-12-2008 23:14:25
Consulta de referencias cruzadas victork_py Firebird e Interbase 5 18-06-2007 16:44:14
Consulta de referencias cruzadas jzginez Firebird e Interbase 2 30-07-2004 04:38:25
consultas de referencias cruzadas Manuela SQL 2 31-08-2003 22:24:55
Consultas de referencias cruzadas Manuela Impresión 0 19-08-2003 21:50:43


La franja horaria es GMT +2. Ahora son las 21:29:59.


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