2016-11-16 8 views
1

Im 2つの異なる日付範囲のデータを比較したい。私はdaterange1とdaterange2と異なる列を持つ同じデータセットにデータを表示したい。ここで私は今持っているものである:ここでは2つの日付範囲からデータの表を照会する方法

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 

私はその後、アイテム数の販売コストのために列を追加する2つの異なる日付範囲からクエリを実行したいと思いますし、結果セットのマージンをそれぞれのセクションに追加します。私はサブクエリを試しましたが、これはすべてのデータをまとめて、そのデータをすべての行に適用します。

ありがとうございました。

+0

あなたの結果が見えるように投稿してください。 – CGritton

+0

結果には、Name、SectionID、ItemCount1、Sales1、Cost1、Margin1、ItemCount2、Sales2、Cost2、Margin2という列があります。 1の列は最初の日付範囲にあり、2の列は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; 

私はいくつかの列を残していますが、アイデアを得ます。

関連する問題