cancel
Showing results for 
Search instead for 
Did you mean: 

Ayuda con Select

former_member1210224
Participant
0 Kudos

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

Accepted Solutions (1)

Accepted Solutions (1)

former_member210784
Active Contributor
0 Kudos

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.

former_member1210224
Participant
0 Kudos

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

Answers (1)

Answers (1)

former_member210784
Active Contributor
0 Kudos

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.