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
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Contar cantidad de columnas que no sean cero (0)

Publicado por Isaias (1921 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