Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Възможно ли е SQL да сравнява общия брой поръчки на час и да премахва текущата наличност?

Нямам SQL Server под ръка и SQLFiddle не ми работи добре напоследък, така че това не е тествано, но логиката трябва да работи...

WITH
    stock_changes
AS
(
    SELECT Supplier, Destination, Req_Time, Prd_Code, Prd_Description, -Qty AS Qty FROM orders
    UNION ALL
    SELECT Supplier, NULL, '00:00', Prd_Code, Prd_Desc, Stock FROM stock
),
    stock_post_order
AS
(
    SELECT
        *,
        SUM(Qty) OVER (PARTITION BY Supplier, Prd_Code
                           ORDER BY Req_Time
                               ROWS UNBOUNDED PRECEDING
                      )
                         AS new_qty
   FROM
       stock_changes
)
SELECT
    *,
    CASE WHEN new_qty > qty THEN new_qty ELSE qty END   AS order_shortfall
FROM
    stock_post_order
WHERE
    new_qty < 0

Първо инвертирайте количествата на поръчката си, за да бъдат отрицателни, така че те са сумата, с която нивата на запасите ще се променят.

След това обединете нивата на наличностите си с поръчките с необходимо време 0 (за да стане малко като поръчка, която доставя наличност, а не взема наличност, и идва преди всичките ви други поръчки) .

След това изчислете какво е общото оставащо количество от даден продукт след поръчка; чрез сумиране на всички предходни редове (по време) за този продукт. (Предаване на Stock - Order1 - Order2, etc, etc )

След това изберете редовете, където новото ниво на запасите е станало отрицателно.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да проверите дали IDENTITY_INSERT е настроен на ON или OFF в SQL Server?

  2. Вземете идентификатора на обект от неговото име в SQL Server:OBJECT_ID()

  3. Техники за оптимизация на заявки в SQL Server:5 най-добри практики за повишаване на производителността на заявките

  4. Грешка при аритметично препълване (числово към числово) с MERGE:Грешка в SQL Server?

  5. Срокове за събиране на аларми от Spotlight Cloud