2016-11-16 114 views
1

我想要比較來自2個不同日期範圍的數據。我希望將數據顯示在來自daterange1和daterange2不同列的相同數據集中。以下是我現在有:如何從兩個日期範圍查詢表中的數據

SELECT l1.Name, t1.SectionID, 
SUM(SectionItems) AS ItemCount, 
SUM(SectionSales) AS Sales, 
SUM(SectionCost) AS Cost, 
(((SUM(SectionSales) - SUM(SectionCost))/ SUM(SectionSales)) * 100) AS Margin 
FROM StoreSectionSales t1 
JOIN Sections l1 ON l1.SectionID = t1.SectionID AND l1.StoreID = t1.StoreID 
WHERE TimeID <= (SELECT TimeID FROM Time WHERE FactDate = '11/15/2015') 
    AND TimeID <= (SELECT TimeID FROM Time WHERE FactDate = '11/15/2016') 
    AND t1.StoreID <> 08 
GROUP BY t1.SectionID, l1.Name 
ORDER BY t1.SectionID 

這是效果是什麼樣子:

Name  SectionID ItemCount Sales Cost Margin 
section1 1   1   100  1  100 
section2 2   2   100  1  100 

我想從兩個不同的日期範圍運行查詢,然後添加列項目計數的銷售成本和結果集的保證金,將它們添加到相應的部分。我已經嘗試了一個子查詢,但是這會將所有數據添加到一起,然後將這些數據應用於所有行。

謝謝。

+0

請發佈您想要的結果。 – CGritton

+0

結果將包含以下列:名稱,SectionID,ItemCount1,Sales1,Cost1,Margin1,ItemCount2,Sales2,Cost2,Margin2。帶1的列將來自第一個日期範圍,帶2的列將來自第二個日期範圍 – user3839756

回答

0

試試這個:

select time1.name, time1.sectionID, 
time1.ItemCount as ItemCount1, time1.Sales as Sales1, 
time2.ItemCount as ItemCount2, time2.Sales as Sales2 
from 
(SELECT l1.Name, t1.SectionID, 
    SUM(SectionItems) AS ItemCount, 
    SUM(SectionSales) AS Sales, 
    SUM(SectionCost) AS Cost, 
    (((SUM(SectionSales) - SUM(SectionCost))/ SUM(SectionSales)) * 100) AS Margin 
    FROM StoreSectionSales t1 
    inner join Sections l1 ON l1.SectionID = t1.SectionID AND l1.StoreID = t1.StoreID 
    WHERE TimeID <= (SELECT TimeID FROM Time WHERE FactDate = '11/15/2015') 
    AND t1.StoreID <> 08 
GROUP BY t1.SectionID, l1.Name) time1 
inner join 
(SELECT l1.Name, t1.SectionID, 
    SUM(SectionItems) AS ItemCount, 
    SUM(SectionSales) AS Sales, 
    SUM(SectionCost) AS Cost, 
    (((SUM(SectionSales) - SUM(SectionCost))/ SUM(SectionSales)) * 100) AS Margin 
    FROM StoreSectionSales t1 
    inner join Sections l1 ON l1.SectionID = t1.SectionID AND l1.StoreID = t1.StoreID 
    WHERE TimeID <= (SELECT TimeID FROM Time WHERE FactDate = '11/15/2016') 
     AND t1.StoreID <> 08 
    GROUP BY t1.SectionID, l1.Name) time2 on time1.name = time2.name 
order by time1.sectionID; 

我離開了某些列,但你的想法。