sql
SELECT ACMSUB.CSID, ACMSUB.CLIENTES, COUNT(evento.Evento) AS DISPAROS, evento.Evento, evento.Detalle, COUNT(DISTINCT CONVERT(VARCHAR(10), CENTRAL.fechan,121)) AS DIASDISPAROS FROM CENTRAL INNER JOIN ACMSUB ON CENTRAL.CSID = CMSUB.CSID INNER JOIN evento ON CENTRAL.EVENTO = evento.Evento WHERE (evento.Evento LIKE 'BA%' OR evento.Evento LIKE '1%') AND (CENTRAL.fechan > '20090524') GROUP BY ACMSUB.CSID, ACMSUB.CLIENTES, evento.Evento, evento.Detalle HAVING (COUNT(evento.Evento) > 1) AND (COUNT(DISTINCT CONVERT(VARCHAR(10), CENTRAL.fechan, 121)) > 1) ORDER BY ACMSUB.CSID
Con esta consulta puedo saber cuantas alarmas hubo donde un cliente y ademas cuantos dias tiene haciendolo.
Trate de hacerla asi puesta en delphi con firebird [glow=red,2,300]Nota: inicio es el valor de un datetimepicker[/glow]:
delphi
DMmantenimiento.ZQinformes.close; DMmantenimiento.ZQinformes.SQL.Clear; DMmantenimiento.ZQinformes.SQL.ADD(' select acmsub.csid, acmsub.clientes, count(evento.tipo) as disparos,EVENTO.EVENTO, evento.detalle,count(distinct(central.fechan))as diasdisparos, DIRECCION,DIRCOM,TELEFONO,NOTACOM'); DMmantenimiento.ZQinformes.SQL.ADD(' from central inner join acmsub on central.csid =acmsub.csid inner join evento on central.evento=evento.evento'); DMmantenimiento.ZQinformes.SQL.ADD(' where (evento.evento like' + QUOTEDSTR('BA%')+'or EVENTO.evento LIKE' +QUOTEDSTR('1%')+')'); DMmantenimiento.ZQinformes.SQL.ADD(' AND CENTRAL.FECHAN > ' + quotedstr(inicio)); DMmantenimiento.ZQinformes.SQL.ADD(' group BY ACMSUB.csid, ACMSUB.clientes, EVENTO.EVENTO,EVENTO.detalle,DIRECCION,DIRCOM,TELEFONO,NOTACOM'); DMmantenimiento.ZQinformes.SQL.ADD(' having (COUNT(EVENTO.TIPO)> 1) AND (COUNT(DISTINCT FECHAN) > 1)'); DMmantenimiento.ZQinformes.SQL.ADD(' ORDER BY ACMSUB.CSID '); DMmantenimiento.ZQinformes.Open;
El problema esta en el conteo de DIASDISPAROS, me da el mismo numero que el conteo de DISPAROS aunque no sea asi.
La idea es que si la alarma de una casa sono:
fecha Hora evento
10/09/2009 11:00Am Robo zona 1
10/09/2009 04:05PM Robo zona 1
11/09/2009 06:00PM Robo zona 1
12/09/2009 09:00PM Robo zona 1
La consulta deberia decir que la zona 1 se disparo 4 veces en 3 dias diferentes
y ahora me esta dando el mismo numero, pero con la version de arriba que la usaba en sql 2000, si me funciona bien, asi que el problema esta en el conteo de la fecha
Espero haberme explicado bien.
Espero sus opiniones, gracias de antemano.