获取在某个串联时段具有某些价值的记录

时间:2016-02-02 08:15:22

标签: sql sql-server sql-server-2014

请考虑此表:

Id    City     Year     Month    F1    F2
-----------------------------------------
1    London    2012     1       10     05
2    London    2012     2       10     05
3    London    2012     3       10     05
4    Paris     2012     1       10     05
5    Paris     2012     2       10     06
6    Tokyo     2013     7       10     05
7    Tokyo     2013     8       10     05
8    Moscow    2013     1       10     05
9    Moscow    2013     3       10     05

我希望记录F2 = '05' 两个串联期间(年 - 月)。例如,对于上述数据,我想要这个结果:

Id    City     Year     Month    F1    F2
-----------------------------------------
1    London    2012     1       10     05
2    London    2012     2       10     05
6    Tokyo     2013     7       10     05

上面的每一行都有一个F2 = '05'的记录,下一个句号(年 - 月)。我怎么能得到这个结果?

由于

1 个答案:

答案 0 :(得分:1)

SELECT a.id, a.city, a.year, a.month, a.f1, a.f2
FROM mytable a, mytable b
WHERE ((b.month = a.month + 1 AND b.year = a.year) 
 OR (b.year = a.year + 1 AND a.month = 12 AND b.month = 1))
AND a.city = b.city AND b.f2 = '05';