SQL - Contar cantidad de columnas que no sean cero (0)

   
Vista:

Contar cantidad de columnas que no sean cero (0)

Publicado por Alvaro (2 intervenciones) el 17/01/2013 14:38:48
Hola, tengo un problema, tengo una tabla en SQL que es algo parecida a esto:

celular - dia_7 - dia_6 - dia_5 - dia_4 - cantidad

987654321 - 0 - 1 - 5 - 0 -
321654998 - 1 - 2 - 3 - 0 -
456789123 - 1 - 1 - 1 - 1 -

necesitaría apoyo para poder realizar lo siguiente: que en la columna cantidad me realice un conteo de todos los números que tengan valores diferentes a 0, pero que no sume la cantidad , solo las cuente, es decir, debería quedar una tabla similar a la que muestro:

celular - dia_7 - dia_6 - dia_5 - dia_4 - cantidad(cuenta)

987654321 - 0 - 1 - 5 - 0 - 2
321654998 - 1 - 2 - 3 - 0 - 3
456789123 - 1 - 1 - 1 - 1 - 4

agradeceré su apoyo con esto, ya que me esta generando algunas dificultades.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

Contar cantidad de columnas que no sean cero (0)

Publicado por Isaias (690 intervenciones) el 17/01/2013 17:15:37
¿Que avance llevas de tu query?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Contar cantidad de columnas que no sean cero (0)

Publicado por Libras (10 intervenciones) el 21/01/2013 23:36:38
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
create table #temp
(
phone varchar(20),
dia1 int,
dia2 int,
dia3 int,
dia4 int
)
 
insert into #temp values ('987654321' , 0 , 1 , 5 , 0 )
insert into #temp values ('321654998' , 1 , 2 , 3 , 0 )
insert into #temp values ('456789123' , 1 , 1 , 1 , 1 )
insert into #temp values ('111111111' , 0 , 1 , 0 , 1 )
insert into #temp values ('222222222' , 0 , 0 , 0 , 1 )
 
select t3.phone,dia1,dia2,dia3,dia4,total from #temp t3
left join (select phone, (isnull(tot_dia1,0)+isnull(tot_dia2,0)+isnull(tot_dia3,0)+isnull(tot_dia4,0)) total from
(
select
phone,
case
when dia1>0 then count(1) end as tot_dia1,
case
when dia2>0 then count(1) end as tot_dia2,
case
when dia3>0 then count(1) end as tot_dia3,
case
when dia4>0 then count(1) end as tot_dia4
from #temp
group by phone,dia1,dia2,dia3,dia4
) t1 group by phone,tot_dia1,tot_dia2,tot_dia3,tot_dia4) t2 on (t3.phone=t2.phone)


saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar