SQL Server - consulta o subconsulta en cero

 
Vista:
sin imagen de perfil

consulta o subconsulta en cero

Publicado por Gabriel (11 intervenciones) el 08/11/2017 01:01:15
Hola comunidad, buenas tardes, tengo el siguiente problema, necesito mostrar un acumulado de ventas por sucursal, pero no doy con la solución, tengo una tabla ventas con la sucursal, folioventa, monto y fecha, lo que deseo saber es el acumulado por mes, asi que de la fecha de hoy, con vb calculo el primer dia y ultimo del mes, sin problemas, si hago la consulta
select distinct sucursal, sum(monto) as acumulado from ventas where fecha between '01-11-2017' and '30-11-2017'

me devuelve

sucursal --- acumulado

suc-01 --- 5400
suc-02 --- 6800
suc-06 ---1250
suc-10 --- 800
.......
.......

el problema es que como suc-03, suc-04, suc-05, etc, no tienen ventas, pues no salen, y lo que deseo es que si no tienen ventas aparezcan en cero

suc-01 --- 5400
suc-02 --- 6800
suc-03 --- 0
suc-04 --- 0

he tratado con inner join con las tablas de sucursales y ventas, pero tengo el mismo resultado, alguien me puede ayudar ????
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 Leonardo Daniel A.
Val: 98
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

consulta o subconsulta en cero

Publicado por Leonardo Daniel A. (48 intervenciones) el 08/11/2017 01:10:47
Necesitas decirnos las tablas y sus campos, asi medio te entiendo
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
sin imagen de perfil

consulta o subconsulta en cero

Publicado por Gabriel (11 intervenciones) el 08/11/2017 01:38:29
Hola Leonardo, gracias por contestar, mi tabla es ventas, y mis campos son folioventa, sucursal, monto y fecha

cuando hago

select distinct sucursal, sum(monto) as acumulado from ventas where fecha between '01-11-2017' and '30-11-2017'

me devuelve

sucursal --- acumulado

suc-01 --- 5400
suc-02 --- 6800
suc-06 ---1250
suc-10 --- 800

no me da las sucursales en cero, entonces intento con inner join con la tabla sucursales, campos nombre y sucursal

nombre --- sucursal
acapulco centro --- suc-01
acapulco agencia --- suc-02
queretaro hacienda1 --- suc03
merida agencia2 --- suc04
puebla centro --- suc-06
.......
.......

select distinc s.nombre, sum(v.monto) as acumulado from sucursales as s
inner join ventas as v on s.sucursal = v.sucursal
where v.fecha between '01-11-2017' and '30-11-2017'
group by s.nombre

y me da de resultado

nombre --- acumulado
acapulco centro --- 5400
acapulco agencia --- 6800
puebla centro --- 1250
........
........

pero no me muestra las sucursales en cero, solo las que tienen ventas, y necesito ver las que estan en cero.
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
Imágen de perfil de Leonardo Daniel A.
Val: 98
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

consulta o subconsulta en cero

Publicado por Leonardo Daniel A. (48 intervenciones) el 08/11/2017 01:46:34
Hola, es que la relacion es alrevez, como tu nombre de sucursal esta en otra tabla, se utiliza el left outer join, ya que el inner solo busca las coincidencias de las 2 tablas

1
2
3
4
5
SELECT s.nombre, SUM(v.nombre) AS acumulado
     FROM sucursales AS s
           LEFT OUTER JOIN ventas AS v ON s.sucursal = v.sucursal
     WHERE  v.fecha BETWEEN '01-11-2017' AND '30-11-2017'
     GROUP BY s.nombre
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
sin imagen de perfil

consulta o subconsulta en cero

Publicado por Gabriel (11 intervenciones) el 08/11/2017 01:56:57
Gracias de nuevo, pero el resultado sigue siendo el mismo, solo me enseña las sucursales que tienen ventas en ese periodo de fechas, y no salen las que no tienen, quisiera que salieran las que no tienen con cero en acumulado
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
Imágen de perfil de Leonardo Daniel A.
Val: 98
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

consulta o subconsulta en cero

Publicado por Leonardo Daniel A. (48 intervenciones) el 08/11/2017 02:31:44
Hola, lo acabo de probar.. aunque tenia un error en el SUM porque puse v.nombre en lugar de v.monto

hice una prueba rapida en visual foxpro, aunque quite las fechas... seguro que te esta funcionando bien el filtro ?


2017-11-07_19-35-38
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
sin imagen de perfil

consulta o subconsulta en cero

Publicado por Gabriel (11 intervenciones) el 08/11/2017 02:53:44
Hola de nuevo, y antes que otra cosa, muchisimas gracias, por dedicar tu valioso tiempo con una prueba asi, hice el mismo ejercicio que tu y obtuve estos resulatdos


consulta1

Pero si agrego el filtro de las fechas, regresa solo los registros con ventas, uso sql server 2000


consulta2
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
Imágen de perfil de Leonardo Daniel A.
Val: 98
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

consulta o subconsulta en cero

Publicado por Leonardo Daniel A. (48 intervenciones) el 08/11/2017 03:00:57
Hola de nuez

quita el where y ponlo como AND en la union


SELECT s.nombre, SUM(v.monto) AS acumulado
FROM sucursales AS s
LEFT OUTER JOIN ventas AS v ON s.sucursal = v.sucursal AND v.fecha BETWEEN '01-11-2017' AND '30-11-2017'
GROUP BY s.nombre
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

consulta o subconsulta en cero

Publicado por Gabriel (11 intervenciones) el 08/11/2017 03:04:41
Wowwwww, exacto, ese es el resultado que busco, muchisimas gracias eres un genio, ojala algun dia pueda devolverte el favor y de nuevo, muchas gracias por tu conocimiento y tu tiempo.
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