2017-06-01 88 views
-1

需要使用SQL查詢有助於解決以下問題:基於前一週範圍SQL點心銷售一個星期

輸入表中有產品編號,周和銷售是唯一的,而列開始和結束周列是我想根據這個範圍來總結那一週的銷售額。

input table

從我們想與周沿提取產品ID並獲得銷售的基礎上,本週開始一週結束一週範圍之間的總和輸入表。

針對每個產品ID和周銷售產值是銷售的基礎上,相應的開始和結束的一週中,輸入表中的產品和周聯合總和。

output table

我試圖做一個自聯接輸入表,但實現,因爲我需要參加兩個產品ID和周,這將抵消目標將無法正常工作。

Select a.Product ID, a.Week, Sum(a.Sales) 
from Input as a, Input as b 
    where a.Product ID = b.Product ID 
    and a.Week between b.Start Week and b.End Week 
group by 1,2 
+0

好吧,有什麼實際問題?你對你的查詢有什麼問題? *你的查詢是什麼? –

+0

我試圖做一個自我輸入表連接,但實現,因爲我需要參加兩個產品ID和周,這將抵消目標將無法正常工作。選擇a.Product ID,a.Week,SUM(a.Sales)從輸入爲a,輸入作爲b,其中a.Product ID = b.Product ID組由1,2- –

回答

0

我不是瘋了關於子查詢,但它至少應該讓你開始:

SELECT 
    a.ProductID, 
    a.Week, 
    (
    SELECT 
     SUM(b.Sales) 
    FROM 
     Table b 
    WHERE 
     b.ProductID = a.ProductID AND 
     b.Week BETWEEN a.StartWeek AND a.EndWeek 
) as CumulativeSales 
FROM 
    Table a 
+0

感謝艾力,但有一種方法可以做到它沒有使用子查詢? –

2

你只需要切換到外部聯接:

Select a.Product ID, a.Week, Sum(a.Sales) 
from Input as a LEFT JOIN Input as b 
    ON a.Product ID = b.Product ID 
and a.Week between b.Start Week and b.End Week 
group by 1,2 

這應該會導致比亞歷克的子查詢更好的計劃。

相關問題