请原谅这个问题的标题,但我想不出简洁的方式来问下面的问题。SQL:查询只有相关匹配数据的两个时间段
简而言之,我有大约400家商店,他们的交易现在和去年同时进行比较。问题是,去年有些商店不在或没有数据,反之亦然。我想写一个查询,比较现在,然后只有在两个时间段内有商店数据的地方。
考虑一下这个数据:
storeID tranDate qty sale
A 2013-12-01 1 $10
B 2013-12-02 1 $10
C 2013-12-03 1 $10
D 2013-12-04 1 $10
A 2012-12-05 1 $10
A 2012-12-09 1 $10
D 2012-12-06 1 $10
E 2012-12-07 1 $10
F 2012-12-08 1 $10
要查询月数据,我会做这样的事情:
select *
from myTable
where (tranDate between @DateStart and @DateEnd) or (tranDate between @DateStartPreviousYear and @DateEndPreviousYear)
但是,如果我想查询十二月像对等的(即存储和D是现在和去年唯一的商店),我该怎么做?
在我的现实世界中,我将在约400家商店每月有大约200万笔交易。
请帮忙!提前致谢!
编辑:感谢您的答案到目前为止。我已经编辑我的样本数据,包括2012年12月两个记录的商店A - 我是说得很对,这将导致一个问题,加入了关于STOREID
在你的例子中,你是否想要一个商店a和d的所有交易清单? – Greg
我误解了你的问题,我纠正了我的回应。 –
非常清楚,去年是什么,你将通过什么样的参数(样本)。年份的平均值是2013年12月和2012年1月的数据是正确的。如果数据是连续的年份,你可以比较一下。如从2010年到2013年。 所以往年意味着什么在f年和确切的月份.doi说datediff应该是1年? – KumarHarsh