1
@date1 Date = '2011-06-01'
,@date2 Date ='2016-06-30'
,@StoreNo Nvarchar(Max)=' '
As
Begin
Select
STD.StoreNo As StoreNo
,CheckDate As CheckDate
,ProductBarCode as ProductBarCode
, SUM(case
when Lead(STD.StockTakingQty) over (order by STD.StockTakingQty) is null
and [CheckDate] <> EOMONTH([CheckDate])
then STD.[StockTakingQty]
else STD.[StockTakingQty] - lead(STD.[StockTakingQty]) over (order by STD.StockTakingQty)
end)AS ProducQty
Into ##temp
From StockTakingDetail STD
Inner Join
(Select StoreNo,CheckNo,CheckDate
From StockTakingMain SM)StocktakingMain
On STD.CheckNo =StockTakingMain.CheckNo
Where
CheckDate Between @date1 AND @date2
Group by
STD.StoreNo,ProductBarCode,CheckDate
If EXISTS (Select StoreNo from ##temp)
Begin
Declare @sql Nvarchar(max)
SET @sql = N'Select * from ##temp where 1=1 ' [email protected]+ 'Order By StoreNo,ProductBarcode'
EXECUTE sp_executesql @sql
END
Else
BEGIN
SELECT
' ' as StoreNo
,'' as CheckDate
,'' as ProductBarCode
,0 as ProductQty
End
DRop Table ##temp
End
我嘗試了每日清單和每月一次,他們爲您進行盤點,但我必須表明日常庫存不能離開Null值有。窗函數不能在另一個窗口函數的上下文或使用聚合
我刪除了「mysqli」標籤並將其替換爲SQL Server,因爲語法顯然是SQL Server。另外,你應該嘗試簡化你的查詢。正如所寫,很難遵循並確定錯誤的可能性。 –