SQL Server - combinar dos selects y promediar

   
Vista:

combinar dos selects y promediar

Publicado por Oscar oscar_miguelm@hotmail.com (4 intervenciones) el 07/02/2014 16:45:55
Buenas a todos,

Quiero solicitar su ayuda en la solución de la construcción de un kardex, tengo dos consultas por un lado tengo las entradas y por otro lado las salidas, esto es lo que quiero hacer: cuando se compra por primera ves un articulo se le calcula el costo initario y las ventas que se hacen posteriormente se calculan con ese costo, el problema viene cuando se surte ese mismo artículo pero trae otro costo unitario y lo que se necesita es promediar el primer costo unitario con el de la segunda compra y el resultado será el costo unitario de las existencias que hay de la compra 1 y de la 2, pongo un ejemplo para explicarme mejor



y así sucesivamente, esto con todos los artículos que se tienen, obviamente los cálculos no tendrían que salir pero los puse para saber de donde salen estos.

Me gustaría saber si esto es posible, de ser así podrían guiarme a realizar estos cálculos, les estaré muy agradecido por sus respuestas, a continuación pongo mis consultas

Entradas (compras)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
WITH DETALBARAN AS
(
SELECT
ADC.PREFIJOPED, ADC.AGENTEPED, ADC.NUMPED, ACC.SUALBARAN, REFERENCIA, SUM(ACL.UNIDADESTOTAL) AS TOTUNID,
ACL.PRECIO AS PRECIOEUROS, (ACL.PRECIO*SUM(ACL.UNIDADESTOTAL)) AS TOTALEUROS, ADC.TIPOCAMBIO, (ACL.PRECIO*ADC.TIPOCAMBIO) AS COMPRAUNITPESOS,
ADP.GASTOS, CONVERT(FLOAT,(ACL.PRECIO*SUM(ACL.UNIDADESTOTAL)*ADC.TIPOCAMBIO)) AS TOTALREFPESOS, ACL.NUMSERIE AS TIENDA
FROM ALBCOMPRALIN ACL
LEFT JOIN ALBCOMPRACAB ACC
ON ACC.NUMALBARAN=ACL.NUMALBARAN AND ACC.NUMSERIE=ACL.NUMSERIE
LEFT JOIN ADSA_PEDIMENTOSLIN ADP
ON ADP.SUALBARAN=ACC.SUALBARAN
LEFT JOIN ADSA_PEDIMENTOSCAB ADC
ON ADC.NUMPED=ADP.NUMPED AND ADC.PREFIJOPED=ADP.PREFIJOPED AND ADC.AGENTEPED=ADP.AGENTEPED
WHERE REFERENCIA = '264231235111'
GROUP BY ADC.PREFIJOPED, ADC.AGENTEPED, ADC.NUMPED, ACC.SUALBARAN, REFERENCIA, ACL.NUMSERIE, ACL.PRECIO,
ADC.TIPOCAMBIO, ADP.GASTOS
)
SELECT *, ((TOTALREFPESOS/SUM(TOTALREFPESOS) OVER ())) AS PROPORCION , (((TOTALREFPESOS/SUM(TOTALREFPESOS) OVER ()) * (GASTOS/TOTUNID)) + COMPRAUNITPESOS) AS COSTOUNIT
FROM DETALBARAN
GROUP BY DETALBARAN.PREFIJOPED, DETALBARAN.AGENTEPED, DETALBARAN.NUMPED, DETALBARAN.SUALBARAN, DETALBARAN.REFERENCIA, DETALBARAN.TOTUNID,
DETALBARAN.PRECIOEUROS, DETALBARAN.TOTALEUROS, DETALBARAN.TIPOCAMBIO, DETALBARAN.COMPRAUNITPESOS, DETALBARAN.GASTOS, DETALBARAN.TOTALREFPESOS,
DETALBARAN.TIENDA

Salidas (ventas)

1
2
3
4
5
select avc.fecha, avl.referencia, avl.unidadestotal, avc.numserie+'/'+convert(varchar(5),avc.numfac) as pedimento
from albventalin avl
left join albventacab avc
on avc.numserie = avl.numserie and avc.numalbaran = avl.numalbaran
where avl.referencia = '264231235111' and avl.unidadestotal != 0

Saludos.
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