簡體   English   中英

在SQL中計算股票突變

[英]Calculating stock mutations in sql

我想計算出庫=每天離開倉庫的產品數量。 如果我運行這些查詢,我可以看到sql正在以某種方式計數數量,但我不明白為什么。 有人可以看到問題嗎? 如何避免這種情況?

SELECT readYesterday.ArticleCode,
       MAX(readToday.ArticleCode) AS ArticleCodeToday,
       readYesterday.ReportDate,
       SUM(ISNULL(readToday.TotalStock, 0)) AS TotalStockToday,
       SUM(readYesterday.TotalStock) AS TotalStockYesterday,
       SUM(readYesterday.TotalStock - ISNULL(readToday.TotalStock, 0)) AS Outbound
FROM ArticleReads readYesterday
LEFT JOIN ArticleReads readToday ON readToday.ArticleCode = readYesterday.ArticleCode
AND readToday.InboundDossier = readYesterday.InboundDossier
AND readToday.ReportDate = DATEADD(DAY, 1, readYesterday.ReportDate)
WHERE readYesterday.ArticleCode ='ART01234'
  AND readToday.ReportDate <> Convert(date, getdate())
  AND readYesterday.ReportDate = '2018-04-26'
GROUP BY readYesterday.ArticleCode,
         readYesterday.ReportDate
ORDER BY ReportDate ASC

SELECT *
FROM ArticleReads readYesterday
WHERE readYesterday.ArticleCode = 'ART01234'
  AND readYesterday.ReportDate = '2018-04-26'

SELECT *
FROM ArticleReads readYesterday WHERE readYesterday.ArticleCode = 'ART01234'
AND readYesterday.ReportDate = '2018-04-27'

在這里您可以看到結果

在連接昨天和今天的表時,必須確保您已連接主鍵。 在您的情況下,您正在使用文章代碼,inbounddossieur和reportdate + 1; 但是,由於每行有2行,沒有任何區別,因此聯接將返回4行! 您需要添加一個連接條件,該條件唯一地指定每一行-也許是位置碼?

and readToday.LocationCode=readYesterday.LocationCode

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM