Ver Mensaje Individual
  #8 (permalink)  
Antiguo 04/12/2008, 09:44
Avatar de Thumper
Thumper
 
Fecha de Ingreso: agosto-2004
Ubicación: Jesús María - Lima - Perú
Mensajes: 270
Antigüedad: 20 años, 4 meses
Puntos: 6
Respuesta: Porcentaje condicional con agrupacion de fechas

Hola Jesús, la única manera que te salga 0 en la parte de abajo es q para un dia se de:

Cantidad Si = 0
Cantidad No = 0

Podrias hacer lo siguiente:

Código sql:
Ver original
  1. DECLARE @TABLE TABLE ( fecha datetime, condicional CHAR(2))
  2.  
  3. INSERT INTO @TABLE VALUES( dateadd(DAY, -1, getdate()) , 'd' )
  4. INSERT INTO @TABLE VALUES( dateadd(DAY, -1, getdate()) , 'ns' )
  5. INSERT INTO @TABLE VALUES( dateadd(DAY, -1, getdate()) , 'f' )
  6.  
  7. SELECT DISTINCT *,
  8.     [%_si] = (cont1 / ((
  9.         CASE
  10.          WHEN cont1+cont2 = 0 THEN -1
  11.          ELSE cont1+cont2
  12.         END
  13.         ) * 1.0))*100,
  14.     [%_no] = (cont2 / ((
  15.         CASE
  16.          WHEN cont1+cont2 = 0 THEN -1
  17.          ELSE cont1+cont2
  18.         END
  19.         ) * 1.0))*100
  20. FROM (
  21. SELECT  anio = YEAR(t.fecha),
  22.     mes = MONTH(t.fecha),
  23.     dia = DAY(t.fecha),
  24.     cont1 = (SELECT COUNT(t1.condicional) FROM @TABLE t1
  25.          WHERE  YEAR(t1.fecha) = YEAR(t.fecha) AND  
  26.             MONTH(t1.fecha) = MONTH(t.fecha) AND
  27.             DAY(t1.fecha) = DAY(t.fecha) AND
  28.             condicional = 'si' ),
  29.     cont2 = (SELECT COUNT(t1.condicional) FROM @TABLE t1
  30.          WHERE  YEAR(t1.fecha) = YEAR(t.fecha) AND  
  31.             MONTH(t1.fecha) = MONTH(t.fecha) AND
  32.             DAY(t1.fecha) = DAY(t.fecha) AND
  33.             condicional = 'no' )    
  34. FROM @TABLE t ) xx

Por cierto en mi caso condicional es 'si' y 'no', si existen otros condicionales, por ejemplo cuando coloquen 0 es 'no' eso agregalo a los select cont1 y cont2 en la parte del where.
Saludos
__________________
Martín Alexis Valdivia S.
-----------------------------
"Quisiéramos cambiar el mundo, pero Dios no nos daría el código fuente." CAP
"Si Saber No Es Un Derecho, Seguro Será Un Izquierdo." WD