none
Obtener productos con menor stock RRS feed

  • Pregunta

  • estimados, quisiera pedir su ayuda con algo que llevo horas sin poder resolver. Tengo la siguiente tabla:

    Producto        Bodega    Stock

    aaa                  05           15

    aaa                  06           25  

    aaa                  07           99

    bbb                  05           28

    bbb                  06           12  

    bbb                  07           15

    Necesito obtener los productos cuyo stock de la bodega 05 sea inferior a las demás bodegas.

    Tengo mas de 2 mil productos en la tabla y 11 bodegas.

    Seria ideal que me mostrara el producto y la bodega que lo supera en stock.

    Gracias de antemano.

    martes, 16 de enero de 2018 4:30

Respuestas

Todas las respuestas

  • Un matiz: cuando dices que el stock de la 05 sea inferior a las demás, ¿te refieres a la suma de las demás, o a una cualquiera de las demás considerada individualmente?

    Si es la suma, podría ser así:

    Select * from laTabla as a where a.Bodega='05' and Stock<(Select Sum(b.Stock) from laTabla as b where b.Bodega<>a.bodega and a.Producto=b.Producto)

    Si es cada una individual, puedes hacer un self-join:

    Select * from laTabla as a join latabla as b on a.producto=b.producto and a.bodega<b.bodega where a.Stock<b.Stock and a.bodega='05'

    martes, 16 de enero de 2018 7:18
  • Deleted
    martes, 16 de enero de 2018 9:14
  • tendrias que crear una matriz pivot en la cual vayas agrupando con un sort min para cada una. con un pivot o case podrias lograr el resultado.
    martes, 16 de enero de 2018 12:59
  • -- Muestra los detalles de los productos en las bodegas que tienen mas existencia que la 5
    ;WITH BODG5
    AS
    (
        SELECT
            Producto,            
            Stock
        FROM existencias 
        WHERE Bodega = 5
    )
    SELECT
            Producto,            
            Bodega,
            Stock
    FROM existencias e 
    join BODG5 b on e.Producto = b.Producto
    WHERE
            b.Stock < e.Producto     
    
    
    -- Muestra los detalles de los productos en la bodega 5 que tienen menor stock que en el resto de las bodegas
    ;WITH BODGNO5
    AS
    (
        SELECT
            Producto,            
            min(Stock) AS Stock
        FROM existencias 
        WHERE Bodega <> 5
        GROUP BY Producto
    )
    SELECT
            Producto,            
            Bodega,  -- Siempre va a mostra la 5
            stock
    FROM existencias e 
    join BODGNO5 b on e.Producto = b.Producto
    WHERE
        e.Bodega = 5
    AND e.Stock < b.Producto     
    
    

    Saludos


    Ing. Jose Mariano Alvarez - http://blog.josemarianoalvarez.com

    martes, 16 de enero de 2018 14:42
  • Gracias. Me sirvió para lo que necesito.

    :)


    Daniel Perez

    miércoles, 17 de enero de 2018 17:20