我想比较两个不同日期范围的数据。我希望数据显示在同一数据集中,其中包含来自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
我想从2个不同的日期范围运行查询,然后将项目计数销售成本和保证金的列添加到结果集,并将它们添加到相应的部分。我尝试了一个子查询,但是这会将所有数据一起添加到所有行中。
感谢。
答案 0 :(得分: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;
我遗漏了一些专栏,但你明白了。