Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 堆栈FIFO无数据_Sql_Sql Server - Fatal编程技术网

Sql 堆栈FIFO无数据

Sql 堆栈FIFO无数据,sql,sql-server,Sql,Sql Server,我对FIFO SQL使用这个查询,但是如果一篇文章没有“出击”或“Entrée”,它就不起作用 进场=进场,出动=出场 WITH Sold AS ( SELECT IT.code , SUM(IT.quantite)*-1 AS TotalSoldQty FROM dbo.F_Mvtstk It WHERE It.Typ = 'Sortie' GROUP

我对FIFO SQL使用这个查询,但是如果一篇文章没有“出击”或“Entrée”,它就不起作用

进场=进场,出动=出场

WITH    Sold
      AS ( SELECT   IT.code ,
                    SUM(IT.quantite)*-1 AS TotalSoldQty
           FROM     dbo.F_Mvtstk It
           WHERE    It.Typ = 'Sortie'
           GROUP BY IT.code
         ),
    Bought
      AS ( SELECT   IT.* ,
                    SUM(IT.quantite) OVER ( PARTITION BY IT.code ORDER BY IT.date ASC ) AS RunningBoughtQty
           FROM     F_Mvtstk IT
           WHERE    IT.Typ = 'Entrée'
         )
SELECT  B.* ,
    S.TotalSoldQty ,
    B.RunningBoughtQty + S.TotalSoldQty AS RunningDifferenceQty,        
    IIF(
        B.RunningBoughtQty + S.TotalSoldQty < 0, 
        0, 
        B.RunningBoughtQty + S.TotalSoldQty
    ) AS  RunningRemainingQty,      
    IIF(
        B.RunningBoughtQty + S.TotalSoldQty < 0, 
        0, 
        IIF(
            B.RunningBoughtQty + S.TotalSoldQty > B.quantite, 
            B.quantite, 
            B.RunningBoughtQty + S.TotalSoldQty
        )
    ) AS  RemainingQty  
    into essai2
FROM    Bought B
    INNER JOIN Sold S ON B.code = S.code
ORDER BY B.code, B.date, B.id;
如果我抑制了
A02
A03
,它就会工作


有人能帮我解决这个问题吗。

看起来你只是想要这样的东西:

SELECT code, TotalSoldQty, TotalBought,
       SUM(TotalBought) OVER (PARTITION BY code ORDER BY date) as runningBought,
       SUM(TotalSold) OVER (PARTITION BY code ORDER BY date) as runningSold,
       (SUM(TotalBought) OVER (PARTITION BY code ORDER BY date) +
        SUM(TotalSold) OVER (PARTITION BY code ORDER BY date) as runningSold
       ) as net
FROM (SELECT IT.code, IT.date,
             SUM(CASE WHEN It.Typ = 'Sortie' THEN IT.quantite)*-1 ELSE 0 END) AS TotalSoldQty,
             SUM(CASE WHEN It.Typ = 'Entrée' THEN IT.quantite) ELSE 0 END) AS TotalBought
      FROM dbo.F_Mvtstk It
      GROUP BY IT.code, IT.date
     ) c

请提供示例数据、期望的结果,并描述您想要实现的逻辑。我做到了,很清楚是示例表数据还是期望的结果?“反正我们两个都需要。”穆罕默德·费塔赫说,还不清楚。此查询与标题无关-它不显示SQL中的任何堆栈结构或从堆栈中弹出内容的查询。这是对未知数据的未知表的查询。我们不知道结果应该是什么样子,也不知道问题出在哪里is@MohammedFETTAH人们不得不猜测,表中包含来自字段名的源数据——它们没有出现在SELECT语句中的任何位置,而其中一些出现在CTEsit中。它不起作用,我的查询只适用于“A01”,我不知道为什么?
SELECT code, TotalSoldQty, TotalBought,
       SUM(TotalBought) OVER (PARTITION BY code ORDER BY date) as runningBought,
       SUM(TotalSold) OVER (PARTITION BY code ORDER BY date) as runningSold,
       (SUM(TotalBought) OVER (PARTITION BY code ORDER BY date) +
        SUM(TotalSold) OVER (PARTITION BY code ORDER BY date) as runningSold
       ) as net
FROM (SELECT IT.code, IT.date,
             SUM(CASE WHEN It.Typ = 'Sortie' THEN IT.quantite)*-1 ELSE 0 END) AS TotalSoldQty,
             SUM(CASE WHEN It.Typ = 'Entrée' THEN IT.quantite) ELSE 0 END) AS TotalBought
      FROM dbo.F_Mvtstk It
      GROUP BY IT.code, IT.date
     ) c