on 05-20-2013 8:19 PM
Buenas tardes, lo que me sucede es lo siguiente, tengo 2 tablas, una con los consumos de suministros con el código del articulo, la cantidad consumida, la fecha en la que se consumió y el almacén en el que esta el artículo (ver la tabla siguiente)
# Nroart Descripción del artículo Can CentroCosto Fecha Almacén
1 611297 ADHESIVOS POST IT MEDIANOS 1 905099 31/07/2012 S1 ******************
2 611297 ADHESIVOS POST IT MEDIANOS 1 501099 20/04/2012 S1
3 611297 ADHESIVOS POST IT MEDIANOS 1 905099 25/12/2012 S1
12 611297 ADHESIVOS POST IT MEDIANOS 1 203099 15/01/2013 S1
13 611297 ADHESIVOS POST IT MEDIANOS 1 301090 15/02/2013 S1
14 611297 ADHESIVOS POST IT MEDIANOS 1 301090 14/04/2013 S1
Y adicional a esta tabla, tengo otra con las ordenes de compra de los artículos, lo que necesito es hacer una consulta que me una ambas tablas, la dificultad radica en que la consulta me debe arrojar el Precio al que compre el articulo en la fecha anterior al gasto
# Fechaconta Nroartí Descripción artículo/serv. Precio
1 22/01/2013 611297 ADHESIVOS POST IT MEDIANOS 950
2 06/11/2012 611297 ADHESIVOS POST IT MEDIANOS 945
3 22/06/2012 611297 ADHESIVOS POST IT MEDIANOS 930
4 15/05/2012 611297 ADHESIVOS POST IT MEDIANOS 980
5 29/03/2012 611297 ADHESIVOS POST IT MEDIANOS 912
6 13/02/2012 611297 ADHESIVOS POST IT MEDIANOS 985
Me hago explicar con este ejemplo:
El 31 de julio de 2012 he entregado el articulo 611297 al centro de costos 905099, quiero encontrar en la tabla 2, sólo el primer registro comprado la misma fecha o antes de que haya hecho el consumo, o sea que tendría que devolverme el registro # 3 de la tabla 2, por un precio de 930 pesos.
Yo se que para sacar esto tengo que hacer un Select Top 1, lo que pasa es que cuando hago la consulta, no me deja tomar hacer el Select, tomando la fecha del Select de la primera tabla, pues la condición del select debe ser: T2.Fecha <= T1.Fecha, con lo cual quedaría algo asi:
SELECT T1.[DocDate], T1.[DocDate] FROM T1
INNER JOIN
(SELECT TOP1 T0.PriceBefDi FROM POR1 T0 WHERE T0.[DocDate] <= T1.[DocDate]) T2
ON T2.[ItemCode] = T1.[ItemCode]
Al ejecutarlo me saca un error, si alguien sabe en que estoy fallando o me puede dar una luz de que debo hacer para sacar este informe se lo agradecería, pues no he podido sacar el último precio de compra del articulo, teniendo en cuenta que este depende de la última fecha en que se gasto.
Quedo a la espera de una pronta respuesta y agradezco la valiosa colaboración, es urgente y no he podido dar con el caso.
Un saludo y gracias de antemano a quien me de una mano.
Oscar Gallego
Hola Oscar.
¿Cuando te refieres al consumo haces referencia al consumo en producción?. Si es así, ¿pueden realizarse devoluciones de materia prima no utilizadas en producción?.
Saludos.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Héctor agradezco tu colaboración y te cuento que cuando hablo del consumo, es de los consumibles propiamente dichos (lapiceros, hojas, etc.), sin embargo te cuento que ya encontré la solución y aquí la dejo por si a alguien más le sirve para sus labores:
SELECT T9.[ItemCode],T9.[ItemName] 'Nombre del artículo',T9.Quantity,T9.OcrCode 'Centro Costos',T9.DocDate,T8.PriceBefDi 'Costo'
FROM
(SELECT T0.[ItemCode],T0.[ItemName],T1.Quantity,T1.OcrCode,T1.DocDate,MONTH(T1.DocDate) as "Mes",T0.[DfltWH]
FROM OITM T0
INNER JOIN IGE1 T1
ON T0.[ItemCode] = T1.[ItemCode]
WHERE T0.[DfltWH] = 'S1'
AND T1.[whsCode] = 'S1'
AND T1.DocDate >= @FechaInicial AND T1.DocDate <= @FechaFinal) T9
OUTER APPLY
(SELECT TOP 1 T0.PriceBefDi
FROM POR1 T0
WHERE T0.[DocDate] <= T9.[DocDate] AND T0.ItemCode = T9.[ItemCode]
ORDER BY T0.[DocDate] DESC) T8
Agradezco la colaboración de todos, asi no me hayan podido dar una respuesta, gracias.
Oscar Gallego
Hola.
Si es basado en el consumo en producción puedes empezar con un query así:
SELECT
T0.[DocNum],T0.[DocDate], T1.[ItemCode], T1.[Dscription], T1.[Quantity], T1.[WhsCode], T1.Project, T1.OcrCode, 'Ult. Precio Compra'=(SELECT TOP 1 T11.PriceBefDi FROM OPOR T10 INNER JOIN POR1 T11 ON T10.DocEntry = T11.DocEntry WHERE T10.[DocDate] <= T0.[DocDate] AND T11.[ItemCode] = T1.[ItemCode])
FROM
OIGE T0 INNER JOIN IGE1 T1 ON T0.DocEntry = T1.DocEntry
WHERE
T0.[JrnlMemo] LIKE '%produc' AND T0.[DocDate] BETWEEN '[%0]' AND '[%1]'
Saludos cordiales.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
106 | |
12 | |
10 | |
5 | |
4 | |
3 | |
3 | |
3 | |
3 | |
2 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.