Sql-Server

無法對銷售額欄位的值求和 - 各種條件、銷售代表 ID 和日期範圍

  • December 30, 2020

我想知道是否有人可以幫助我處理這個 SQL Server 2016 查詢。

我有兩個包含以下數據的表

銷售代表

這是一個表格,其中包含銷售代表所關注的地區的歷史以及他們所關注的日期範圍。

tbl銷售額

這是包含地區銷售額的表格

我正在嘗試生成一份報告,顯示給定 SalesRep 的 SalesRep 和兩個日期之間的總銷售額。

例如,如果我提供了一個 SalesRep = ‘Anne’ 並且日期範圍是 ‘1 Jun 2020’ 到 ‘30 Jun 2020’,我希望得到的結果是:

SalesRep    Sum
Anne        185

這是因為它應該排除在 2020 年 6 月 3 日至 2020 年 6 月 16 日之間進行的任何交易,因為該領土由戴夫照管了幾個星期,並且他在這些日期之間進行了該業務。

我在加入 TblSalesRep 時嘗試使用 SUM() 函式,但這些數字不是我所期望的。

有更緊湊的方法來編寫它,但這說明了一種方法。

首先選擇 Anne 負責該地區的地區和時期。

然後提取交易日期在 Anne 覆蓋進行銷售的區域的某個時期內的所有銷售。

然後總結銷售額。

WITH
territory_periods AS (
SELECT SalesRep, TerritoryID, FromDate, ToDate
 FROM tblSalesRep 
WHERE SalesRep = 'Anne'
)
,sales AS (
SELECT p.SalesRep, s.Amount
 FROM tblSales s
 JOIN territory_periods p
   ON s.TerritoryID = p.TerritoryID 
  AND s.TransactionDate BETWEEN p.FromDate AND p.ToDate
)
SELECT SalesRep, Sum(Amount)
 FROM sales 
GROUP
   BY SalesRep
;

引用自:https://dba.stackexchange.com/questions/282313