cancel
Showing results for 
Search instead for 
Did you mean: 

Ayuda con Query

Former Member
0 Kudos

Jovenes expertos necesito hacer una sumatoria entre subquerys, pero la verdad ya hice varias pruebas y no podido dar con el resultado, espero me puedan ayudar al respecto, les dejo los dos subquerys que necesito sumas.

Case When T0.[CardCode] = T0.CardCode THEN (SELECT SUM(Y.StockSum)  FROM PCH1 Y WHERE Y.DocEntry = T0.DocEntry and (Y.ItemCode) = 'PLA0002') END as 'Bonificacion',

    Case When T0.[CardCode] = T0.CardCode THEN (SELECT SUM(Y.StockSum)  FROM PCH1 Y WHERE Y.DocEntry = T0.DocEntry and (Y.ItemCode) = 'PLA0005') END as 'Bonificacion Execente',

Espero me puedas ayudar y de antemano muy agradecido por su ayuda, si necesitan todo el query con gusto lo comparto.

Saludos

Accepted Solutions (1)

Accepted Solutions (1)

felipe_loyolarodriguez
Active Contributor
0 Kudos

Buenas

Mirando lo que has puesto, creo que estas armando mal el query. Estas comparando el mismo campo de la misma tabla "T0.CardCode = T0.CardCode".

Te recomendaria solo dejar el subquery

(SELECT SUM(Y.StockSum)  FROM PCH1 Y WHERE Y.DocEntry = T0.DocEntry and (Y.ItemCode) = 'PLA0002')

Saludos

Former Member
0 Kudos

Gracias Felipe te lo agradezco quedo perfecto.

Saludos

Former Member
0 Kudos

Perdon el abuso Felipe pero de igual forma necesito hacer una suma y resta la mismo tiempo de tres campos eje: Onhand + Ene OC - Ene OV el resultado de esto en una columna, y por supuesto el resultado de ENE Total sumarlo con Feb_OC - Feb_Ov el resultado Ej TOTAL_FEB, podrias darme un ejemplo de como hacerlo, es que no he logrado hacer que funcione de ninguna forma. Te dejo un pequeño query para que me pudas dar una idea de como realizarlo.

SELECT DISTINCT T0.[ItemCode], T0.[ItemName], T0.SWW, T0.[OnHand],

        (Select sum(Y.Quantity) FROM POR1 Y WHERE Y.[LineStatus] ='O' and Month(Y.[DocDate])= '01' and Y.itemcode = T0.itemcode) as 'ENE_OC',

        (Select sum(Y.Quantity) FROM RDR1 Y    WHERE y.[LineStatus] ='O' and Month(y.[DocDate])= '01' and Y.itemcode = T0.itemcode) as 'ENE_OV',

        (Select sum(Y.Quantity) FROM POR1 Y WHERE Y.[LineStatus] ='O' and Month(Y.[DocDate])= '02' and Y.itemcode = T0.itemcode) as 'FEB OC',

        (Select sum(Y.Quantity) FROM RDR1 Y    WHERE y.[LineStatus] ='O' and Month(y.[DocDate])= '02' and Y.itemcode = T0.itemcode) as 'FEB OV'

            FROM OITM T0

WHERE T0.OnHand > '0'

Agradezco tu ayuda y disculp a las molestias que pueda ocacionar.

SAludos

felipe_loyolarodriguez
Active Contributor
0 Kudos

Buenas tardes

Pruebalo de esta manera

SELECT DISTINCT T0.[ItemCode], T0.[ItemName], T0.SWW, T0.[OnHand],

        (Select sum(Y.Quantity) FROM POR1 Y WHERE Y.[LineStatus] ='O' and Month(Y.[DocDate])= '01' and Y.itemcode = T0.itemcode) as 'ENE_OC',

        (Select sum(Y.Quantity) FROM RDR1 Y    WHERE y.[LineStatus] ='O' and Month(y.[DocDate])= '01' and Y.itemcode = T0.itemcode) as 'ENE_OV',

(T0.Onhand+(Select sum(Y.Quantity) FROM POR1 Y WHERE Y.[LineStatus] ='O' and Month(Y.[DocDate])= '01' and Y.itemcode = T0.itemcode)-(Select sum(Y.Quantity) FROM RDR1 Y    WHERE y.[LineStatus] ='O' and Month(y.[DocDate])= '01' and Y.itemcode = T0.itemcode)) as 'TOTAL_ENE',

        (Select sum(Y.Quantity) FROM POR1 Y WHERE Y.[LineStatus] ='O' and Month(Y.[DocDate])= '02' and Y.itemcode = T0.itemcode) as 'FEB_OC',

        (Select sum(Y.Quantity) FROM RDR1 Y    WHERE y.[LineStatus] ='O' and Month(y.[DocDate])= '02' and Y.itemcode = T0.itemcode) as 'FEB_OV',

(T0.Onhand+(Select sum(Y.Quantity) FROM POR1 Y WHERE Y.[LineStatus] ='O' and Month(Y.[DocDate])= '02' and Y.itemcode = T0.itemcode)-(Select sum(Y.Quantity) FROM RDR1 Y    WHERE y.[LineStatus] ='O' and Month(y.[DocDate])= '02' and Y.itemcode = T0.itemcode)) as 'TOTAL_FEB'

        FROM OITM T0

WHERE T0.OnHand > '0'

Ojala funcione

Saludos

Former Member
0 Kudos

Gracias Felipe por tu ayuda pero no me funciono, pero me ayudaste a poder hallarle una solucion y el query me quedo asi, pero aun asi lo que ocurre es que algunas si las suma y otras no, aunque tengan movimiento y me esta duplicando las lineas aun cuanto tenie el Group By no funciona, alguna idea de que sea el problema.

De antemano agradezco tu valiosa ayuda y gracias por tu tiempo.

SELECT DISTINCT T0.[ItemCode], T0.[ItemName], T0.SWW, T0.[OnHand],

        (Select sum(Y.Quantity) FROM POR1 Y WHERE Y.[LineStatus] ='O' and Month(Y.[DocDate])= '01' and Y.itemcode = T0.itemcode) as 'ENE_OC',

        (Select sum(Y.Quantity) FROM RDR1 Y WHERE Y.[LineStatus] ='O' and Month(y.[DocDate])= '01' and Y.itemcode = T0.itemcode) as 'ENE_OV',

        CASE When (T1.[LineStatus] = 'O' or T2.[LineStatus]= 'O') then ((Select sum(Y.Quantity) FROM POR1 Y WHERE Y.[LineStatus] ='O' and Month(Y.[DocDate])= '01' and Y.itemcode = T0.itemcode)-(Select sum(Y.Quantity) FROM RDR1 Y    WHERE y.[LineStatus] ='O' and Month(y.[DocDate])= '01' and Y.itemcode = T0.itemcode)+T0.Onhand) end as 'TOTAL_ENE',

        (Select sum(Y.Quantity) FROM POR1 Y WHERE Y.[LineStatus] ='O' and Month(Y.[DocDate])= '02' and Y.itemcode = T0.itemcode) as 'FEB_OC',

        (Select sum(Y.Quantity) FROM RDR1 Y    WHERE y.[LineStatus] ='O' and Month(y.[DocDate])= '02' and Y.itemcode = T0.itemcode) as 'FEB_OV',

        CASE When (T1.[LineStatus] = 'O' or T2.[LineStatus]= 'O') then ((Select sum(Y.Quantity) FROM POR1 Y WHERE Y.[LineStatus] ='O' and Month(Y.[DocDate])= '02' and Y.itemcode = T0.itemcode)-(Select sum(Y.Quantity) FROM RDR1 Y    WHERE y.[LineStatus] ='O' and Month(y.[DocDate])= '02' and Y.itemcode = T0.itemcode)) end as 'TOTAL_FEB'

    FROM OITM T0  INNER JOIN

         POR1 T1 ON T0.ItemCode = T1.ItemCode INNER JOIN

         RDR1 T2 ON T0.ItemCode = T2.ItemCode

Group BY T0.[ItemCode], T0.[ItemName], T0.SWW, T0.[OnHand], T1.[LineStatus], T2.[LineStatus]

Saludos y muy agradecido.

Answers (0)