SQL Server - Consulta sql Promedio Ponderado

 
Vista:

Consulta sql Promedio Ponderado

Publicado por Cristian I. (2 intervenciones) el 11/08/2009 02:37:10
Esta es una consulta que paso a ser un reto del cual sali vencido.Por eso recurro a este foro, por si hay alguna
persona que me entienda y haya pasado por lo mismo, pido que me ayude...........gracias.

método Precio Medio Ponderado antes de cada salida(Sistema Inventario Perpetuo)

La importancia de valorar el coste de la mercancía vendida viene dada porque el
resultado del ejercicio es la diferencia entre las ventas y el coste de esas ventas,
y no por la diferencia entre compras y ventas.
Este método de control de inventarios tiene como características fundamentales las siguientes:

1 cada vez que entra en el almacén un lote de mercancía,
el costo unitario del saldo resultante, debe ser recalculado.

2 La existencia física es presentada en un solo total, en vez de estar
segregado en lotes según el orden de entrada.

3 El costeo de las unidades que van saliendo,
se hace en base al costo promedio calculado en saldo inmediato anterior.

*mi problema es seguir el acumulado al momento de producirce una venta,!Solo en una sentencia SQL.
*lo que deseo obtener es el promedio ponderado,el costo total y el saldo costo total,
desde el inicio de inventario,la primera compra hasta una fecha X,que ingrese el usuario.
Ej. desde May 01 hasta May 25(X) o la fecha que desee el usuario.


Ejemplo. 01
----------------------------------------------------------------------------------
Fecha tran Cant. Costo Saldo Promedio Costo Saldo
saccion Unidad UnIdad Unidad Ponderado Total Costo tot
----------------------------------------------------------------------------------
May01|Comienzo 700 $10 700 $10 $--7,000 $ 7.000
May03|Purchase 100 $12 800 $10.25(*1) $--1.200 $ 8.200
May08|Sale (500) ?? 300 ?$10.25 $(-5.125) $ 3.075
May15|Purchase 600 $14 900 $12.75(*2) $--8.400 $11.475
May19|Purchase 200 $15 1,100 $13.16(*3) $--3.000 $14.475
May25|Sale (400) ?? 700 ?$13.16 $(-5.264) $ 9.211
May27|Sale (100) ?? 600 ?$13.16 $(-1.316) $ 7.895
May31|fin inv.------------??------------------------------------------------------
-----------------------------------------------------------------------------------
Sum(Cantidad Unidad * Costo Unidad )as SaldoCostoTotal / Sum(Cantidad Unidad) as SaldoUnidad
se divide el saldo Costo Total con saldo unidad para obtener Promedio Ponderado
---------------------------------------------------------------------

(*1) May 03 costo Promedio de 800 unidades
= (700x$10 + 100x$12) / (700 + 100)
= ( $7,000 + $1,200 ) / 800
= $8,200 / 800
= $10.25 Promedio Ponderado

Cost of goods sold on May 8 = 500x$10.25 = $5,125

(*2) May 15 costo Promedio de 900 units
= (300x$10.25 + 600x$14) / (300 + 600)
= ( $3,075 + $8,400 ) / 900
= $11,475 / 900
= $12.75 Promedio Ponderado

(*3) May 19 costo Promedio de 1,100 units
= (900x$12.75 + 200x$15) / (900 + 200)
= ( $11,475 + $3,000) / 1,100
= $14,475 / 1,100
= $13.16 Promedio Ponderado

Cost of goods sold on May 25 = 400x$13.16 = $5,264
Cost of goods sold on May 27 = 100x$13.16 = $1,316
-----------------------------------------------------------
- Total cost of goods sold
-----------------------------------------------------------
= 500x$10.25 + 400x$13.16 + 100x$13.16
= $5,125 + $5,264 + $1,316
= $11,705

--------------------------------------------------------------------------
Cost of ending inventory
--------------------------------------------------------------------------
= Beginning inventory + Costo de Compras -Total Cost
of goods sold
--------------------------------------------------------------------------
= $7,000 + (100x$12 + 600x$14 + 200x$15) - $11,705
= $7,000 + $12,600 - $11,705
= $7,895
--------------------------------------------------------------------------

'este es el Diseño de mi tabla con la insercion de algunos datos para la ejecucion de las pruebas (los mismos valores del ejemplo de mas arriba. Ejemplo 01)

create table Existencia (Ex_Corr int auto_increment,
Ex_Fecha datetime,
Ex_codigo nvarchar(16),
Ex_CantEnt money,
Ex_CantSal money,
Ex_PrecComp money)
go

insert into Existencia (Ex_Fecha,Ex_codigo,Ex_PrecComp,Ex_CantEnt,Ex_CantSal)
values
('01-05-2009 0:00:00','500',700,0,10)

insert into Existencia (Ex_Fecha,Ex_codigo,Ex_PrecComp,Ex_CantEnt,Ex_CantSal)
values
('03-05-2009 0:00:00','500',100,0,12)

insert into Existencia (Ex_Fecha,Ex_codigo,Ex_PrecComp,Ex_CantEnt,Ex_CantSal)
values
('08-05-2009 0:00:00','500',0,500,0)

insert into Existencia (Ex_Fecha,Ex_codigo,Ex_PrecComp,Ex_CantEnt,Ex_CantSal)
values
('15-05-2009 0:00:00','500',600,0,14)

insert into Existencia (Ex_Fecha,Ex_codigo,Ex_PrecComp,Ex_CantEnt,Ex_CantSal)
values
('19-05-2009 0:00:00','500',200,0,15)

insert into Existencia (Ex_Fecha,Ex_codigo,Ex_PrecComp,Ex_CantEnt,Ex_CantSal)
values
('25-05-2009 0:00:00','500',0,400,0)

insert into Existencia (Ex_Fecha,Ex_codigo,Ex_PrecComp,Ex_CantEnt,Ex_CantSal)
values
('27-05-2009 0:00:00','500',0,100,0)

update Existencia set Ex_Fecha = CONVERT(char(10), Ex_Fecha, 103)


'este es mi avance
'Vista
SELECT TOP (100) PERCENT CONVERT(char(10), Ex_Fecha, 103) AS [Order Date], Ex_PrecComp,
CASE WHEN Ex_CantEnt > 0 THEN Ex_CantEnt ELSE - Ex_CantSal END AS Ex_CanEnt,
(SELECT SUM(CASE WHEN Ex_CantEnt > 0 THEN Ex_CantEnt
ELSE - Ex_CantSal END) AS SaldoCantidadUnitaria
FROM dbo.Existencia AS M2
WHERE (Ex_Codigo = O.Ex_Codigo) AND (Ex_corr <= O.Ex_corr)) AS SaldoCantidadUnitaria,
(CASE WHEN Ex_CantEnt > 0 THEN
(SELECT SUM(Ex_CantEnt * Ex_PrecComp) / SUM(Ex_CantEnt) AS PPv_Entradas
FROM dbo.Existencia AS M56
WHERE (Ex_Codigo = O.Ex_Codigo) AND (Ex_corr <= O.Ex_corr))
ELSE -
(SELECT SUM(Ex_CantEnt * Ex_PrecComp) / SUM(Ex_CantEnt) AS PPv_Salidas
FROM dbo.Existencia AS M56
WHERE (Ex_Codigo = O.Ex_Codigo) AND (Ex_corr <= O.Ex_corr))
END) AS PromedioPonderado,
Ex_CantEnt * Ex_PrecComp AS Cant_X_prComp,
(CASE WHEN Ex_CantEnt > 0 THEN
(SELECT SUM(ex_Cantent * ex_PrecComp) AS PPv_Ent
FROM dbo.Existencia AS M56
WHERE (Ex_Codigo = O.Ex_Codigo) AND (Ex_corr <= O.Ex_corr))
ELSE
(SELECT SUM(Ex_Cantsal) * (SUM(Ex_CantEnt * Ex_PrecComp) / SUM(Ex_CantEnt)) AS CostoUnitarioEntrada
FROM dbo.Existencia AS M565
WHERE (Ex_Codigo = O.Ex_Codigo) AND (Ex_corr <= O.Ex_corr))
-(SELECT SUM(ex_Cantent * ex_PrecComp) AS PPv_Ent
FROM dbo.Existencia AS M56
WHERE (Ex_Codigo = O.Ex_Codigo) AND (Ex_corr <= O.Ex_corr))
END) AS CostoUnidad
FROM dbo.Existencia AS O
WHERE (Ex_Codigo = N'500')
ORDER BY Ex_corr

*(CASE WHEN Ex_CantEnt > 0 THEN)si Ex_CantEnt tiene un valor es Compra sino es venta
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

RE:Consulta sql Promedio Ponderado

Publicado por marcos (2 intervenciones) el 11/08/2009 02:45:24
Ejemplo 01.
----------------------------------------------------------------------------------
Fecha tran Cant. Costo Saldo Promedio Costo Saldo
saccion Unidad UnIdad Unidad Ponderado Total Costo tot
----------------------------------------------------------------------------------
May01|Comienzo 700 $10 700 $10 $--7,000 $ 7.000
May03|Compra 100 $12 800 $10.25(*1) $--1.200 $ 8.200
May08|Venta (500) ?? 300 ?$10.25 $(-5.125) $ 3.075
May15|Compra 600 $14 900 $12.75(*2) $--8.400 $11.475
May19|Venta 200 $15 1,100 $13.16(*3) $--3.000 $14.475
May25|Venta (400) ?? 700 ?$13.16 $(-5.264) $ 9.211
May27|Venta (100) ?? 600 ?$13.16 $(-1.316) $ 7.895
May31|fin inv.------------------??-------------------------------------------

espera que ahora salga bien la tabla
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

RE:Consulta sql Promedio Ponderado

Publicado por Cristian I. (1 intervención) el 11/08/2009 03:03:21
Ejemplo 01.
_____________________________________________________
Fecha__tran_____Cant__._Costo____Saldo___Promedio__Costo_____Saldo
_______saccion _Unidad __UnIdad__Unidad__Ponderado__Total_____Costo tot
____________________________________________________
May01|Comienzo__700____$10_____700_____$10_________$7,000___$ 7.000
May03|Compra____100____$12_____800_____$10.25(*1)___$1.200___$ 8.200
May08|Venta_____(500)____??______300____?$10.25____$(-5.125)___$ 3.075
May15|Compra____600____$14_____900_____$12.75(*2)___$8.400___$11.475
May19|Venta______200____$15____1,100_____$13.16(*3)___$3.000___$14.475
May25|Venta_____(400)____??______700____?$13.16____$(-5.264)____$ 9.211
May27|Venta_____(100)____??______600____?$13.16____$(-1.316)____$ 7.895
May31|fin inv.______??_____??_____
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

RE:Consulta sql Promedio Ponderado

Publicado por JUlio (1 intervención) el 14/01/2010 23:47:14
me piden hacer una consulta pidiendo lo siguiente.

Notas , nombre, promedio
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

RE:Consulta sql Promedio Ponderado

Publicado por Edgar (1 intervención) el 14/03/2010 20:38:49
Es un reto pero veamos si lo podemos sacar juntos, ¿Que te parece?
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

RE:Consulta sql Promedio Ponderado

Publicado por ayda con promedio ponderado (1 intervención) el 22/06/2010 02:58:31
Tengo el mismo problema y no se como solucionarlo.
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

RE:Consulta sql Promedio Ponderado

Publicado por DEanny (1 intervención) el 02/07/2012 02:48:47
Hola.. talves lograron solucionar este problema??.... yo ya llevo 1 semana y no logro que funcione.. por favor si alguien lo resolvio.. publique.. estaria agradecido eternamente
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

RE:Consulta sql Promedio Ponderado

Publicado por marco gutierrez (5 intervenciones) el 24/07/2015 18:06:47
buenos dias , que fue pudistes resolverlo la verdad estoy tratando de harlo lo mismo . muchas gracias

marco guti
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

RE:Consulta sql Promedio Ponderado

Publicado por marco (5 intervenciones) el 24/07/2015 18:07:58
buenos dias , que fue pudistes resolverlo la verdad estoy tratando de harlo lo mismo . muchas gracias

marco guti
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

RE:Consulta sql Promedio Ponderado

Publicado por marco guti (5 intervenciones) el 18/09/2015 07:23:09
aqui esta la solucion

https://social.msdn.microsoft.com/Forums/es-ES/e844870e-7c22-4431-9e3d-14df1378a3d9/costo-promedio-ponderado-kardex-valorizado?forum=sqlserveres
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