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

Duda con sum y count en select segun campo de tipo bit

Estas en el tema de Duda con sum y count en select segun campo de tipo bit en el foro de SQL Server en Foros del Web. Muy buenas, a ver si alguien me puede echar una manilla con esto. Tengo esta select: SELECT pr.Nombre, Count(CodPedido) as 'Pedidos Total', CASE pr5.IvaSiNo WHEN ...
  #1 (permalink)  
Antiguo 26/12/2008, 05:29
 
Fecha de Ingreso: mayo-2003
Mensajes: 70
Antigüedad: 21 años, 7 meses
Puntos: 0
Duda con sum y count en select segun campo de tipo bit

Muy buenas, a ver si alguien me puede echar una manilla con esto.

Tengo esta select:

SELECT pr.Nombre, Count(CodPedido) as 'Pedidos Total',
CASE pr5.IvaSiNo WHEN 1 THEN SUM(pr5.Importe) END as totalcon,
CASE pr5.IvaSiNo WHEN 0 THEN SUM(pr5.Importe) END as totalsin
FROM gesberna_pedidos pr5 INNER JOIN gesberna_clientes pr ON pr.CodCliente = pr5.CodCliente
WHERE 1=1
GROUP BY pr.Nombre, IVASino

que me devuelve el total de pedidos de un cliente y la suma de los que son con iva y de los que no. Si es con iva o no lo marca un campo de tipo bit llamado IVASiNo.

El resultado que me devuelve es

NOMBRE / Pedidos Total / totalcon / totalsin
Cliente 1 / 1 / NULL / 5200
Cliente 2 / 1 / NULL / 1520
Cliente 1 / 1 / 100 / NULL
Cliente 3 / 1 / 105 / NULL

Como puedes ver me devuelve dos lineas con el mismo cliente, una con la suma de los pedidos con iva y otra con la suma de los pedidos sin iva.

Yo querría que me lo mostrara de la siguiente forma, con una sola linea por cliente

NOMBRE / Pedidos Total / totalcon / totalsin
Cliente 1 / 2 / 100 / 5200
Cliente 2 / 1 / NULL / 1520
Cliente 3 / 1 / 105 / NULL

Esta es la estructura de la tabla gesberna_pedidos por si ayuda
CodPedido int
CocCliente int
IvaSiNo bit
Importe float
Fecha datetime

Muchas gracias.
  #2 (permalink)  
Antiguo 26/12/2008, 08:17
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 20 años
Puntos: 38
Respuesta: Duda con sum y count en select segun campo de tipo bit

es correcta la logica, solo hay que eliminar la parte donde le dices que haga corte por IVASino..

Y si no se requiere la clausula where, no es necesario ponerle nada...

Código:
SELECT pr.Nombre, Count(CodPedido) as 'Pedidos Total',
CASE pr5.IvaSiNo WHEN 1 THEN SUM(pr5.Importe) END as totalcon, 
CASE pr5.IvaSiNo WHEN 0 THEN SUM(pr5.Importe) END as totalsin
FROM gesberna_pedidos pr5 INNER JOIN gesberna_clientes pr ON pr.CodCliente = pr5.CodCliente
GROUP BY pr.Nombre
Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #3 (permalink)  
Antiguo 26/12/2008, 13:19
 
Fecha de Ingreso: mayo-2003
Mensajes: 70
Antigüedad: 21 años, 7 meses
Puntos: 0
Respuesta: Duda con sum y count en select segun campo de tipo bit

El problema es que al quitar IvaSiNo del groupby me devuelve este error: La columna 'gesberna_pedidos.IvaSiNo' de la lista de selección no es válida, porque no está contenida en una función de agregado ni en la cláusula GROUP BY.

Muchas gracias por tu pronta respuesta.
  #4 (permalink)  
Antiguo 26/12/2008, 13:54
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 20 años
Puntos: 38
Respuesta: Duda con sum y count en select segun campo de tipo bit

ok, solo hay que poner el sum afuera del case...

Código:
SELECT pr.Nombre, Count(CodPedido) as 'Pedidos Total',
SUM(CASE pr5.IvaSiNo WHEN 1 THEN pr5.Importe Else 0 END) as totalcon, 
SUM(CASE pr5.IvaSiNo WHEN 0 THEN pr5.Importe Else 0 END) as totalsin
FROM gesberna_pedidos pr5 
INNER JOIN gesberna_clientes pr ON pr.CodCliente = pr5.CodCliente
GROUP BY pr.Nombre
Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #5 (permalink)  
Antiguo 26/12/2008, 14:09
 
Fecha de Ingreso: mayo-2003
Mensajes: 70
Antigüedad: 21 años, 7 meses
Puntos: 0
Respuesta: Duda con sum y count en select segun campo de tipo bit

Perfecto, muchisimas gracias, es justo lo que buscaba y ademas es lo realmente logico, no como lo estaba intentando yo.

Saludos y Feliz Navidad.
  #6 (permalink)  
Antiguo 26/12/2008, 14:12
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 20 años
Puntos: 38
Respuesta: Duda con sum y count en select segun campo de tipo bit

No hay de que...


Igualmente, Felicidades!

Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
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 23:54.