Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

SUM de un GROUP BY (nvarchar)

Estas en el tema de SUM de un GROUP BY (nvarchar) en el foro de SQL Server en Foros del Web. Buenas tardes estimados, recurro a uds por la siguiente consulta: Tengo que hacer una suma del siguiente group by: Código: select r.campo, COUNT(r.campo) as Cantidad_estado ...
  #1 (permalink)  
Antiguo 29/08/2011, 12:40
 
Fecha de Ingreso: abril-2010
Mensajes: 87
Antigüedad: 14 años
Puntos: 1
Pregunta SUM de un GROUP BY (nvarchar)

Buenas tardes estimados, recurro a uds por la siguiente consulta: Tengo que hacer una suma del siguiente group by:

Código:
select r.campo, COUNT(r.campo) as Cantidad_estado from tabla1 p, tabla2 r 
where  p.Ramo = cast(r.RAMO as CHAR(2)) group by r.campo
he querido hacer la suma asi:

SUM (CONVERT campo TO INT)
o
sum(cast(campo as int))

no funca porque me tira el siguiente error:
Conversion failed when converting the nvarchar value '---' to data type int.

alguna idea??
Graciasss
leo
  #2 (permalink)  
Antiguo 29/08/2011, 12:46
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: SUM de un GROUP BY (nvarchar)

Pues si tienes valores alfanumericos nada mas no va a funcionar, prueba con la funcion isnumeric algo asi create table #temp(
dato varchar(20)
)

insert into #temp values ('1')
insert into #temp values ('2')
insert into #temp values ('3')
insert into #temp values ('--')


select sum(convert(int,dato)) as suma from(
select isnumeric(dato) numero,dato from #temp
) t1 where numero=1


Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Última edición por Libras; 29/08/2011 a las 12:54
  #3 (permalink)  
Antiguo 29/08/2011, 15:14
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: SUM de un GROUP BY (nvarchar)

Hola ingleonidas:

La consulta del compañero Libras es correcta, pero no hay necesidad de utilizar una subconsulta, sólo estás haciendo trabajar de más al servidor de BD... simplemente utiliza la función ISNUMERIC en el where:

Código SQL:
Ver original
  1. DECLARE @Temp TABLE (dato VARCHAR(20))
  2. INSERT INTO @Temp VALUES ('1')
  3. INSERT INTO @Temp VALUES ('2')
  4. INSERT INTO @Temp VALUES ('3')
  5. INSERT INTO @Temp VALUES ('--')
  6. SELECT SUM(CONVERT(INT,dato)) AS suma FROM @Temp WHERE isnumeric(dato) = 1

Saludos
Leo.
  #4 (permalink)  
Antiguo 29/08/2011, 19:23
 
Fecha de Ingreso: abril-2010
Mensajes: 87
Antigüedad: 14 años
Puntos: 1
Respuesta: SUM de un GROUP BY (nvarchar)

Gente, muchisimas gracias por su rta.
Mañana en el trabajo la pruebo y posteo como me fue
saludos
Leonidas
  #5 (permalink)  
Antiguo 30/08/2011, 13:33
 
Fecha de Ingreso: abril-2010
Mensajes: 87
Antigüedad: 14 años
Puntos: 1
Respuesta: SUM de un GROUP BY (nvarchar) - SOLUCIONADO

Gente, gracias por sus respuestas.
Al final lo solucione con un UNION ALL

Código:
select r.CAMPO, count(r.CAMPO) as Cantidad
from Table1 p, Table2 r 
where p.Ramo = cast(r.RAMO as CHAR(2)) group by r.CAMPO
union all
select 'TOTAL' as CAMPO, count(r.CAMPO) as Cantidad 
from Table1 p, Table2 r 
where p.Ramo = cast(r.RAMO as CHAR(2))
Salu2 a todos..
leo

Etiquetas: group, varchar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:39.