SQL查询计算特定时间段

时间:2011-01-05 13:49:56

标签: sql-server-2008 sql

我有一张像这样的桌子:

-------------------------------
| NrOfVisitors | Year | Month |
-------------------------------
| 320          | 2009 | 1     |
-------------------------------
| 300          | 2009 | 2     |
-------------------------------
| 150          | 2010 | 1     |
-------------------------------
| 100          | 2010 | 2     |
-------------------------------

现在我想要计算访客,直到2010年的第一个月。 当我说:

SELECT SUM(NrOfVisitors) As TotalVisitors FROM VisitorTable WHERE YEAR <= 2010 AND Month <= 1

然后我没有得到访问量,因为它不计算2009年2月的访问者。所以我错过了300个访问者的查询。所以我需要的是一个查询来计算NrOfVisitors直到2010年1月

谁能帮助我/

提前致谢!

5 个答案:

答案 0 :(得分:1)

试试这个:

SELECT SUM(NrOfVisitors) As TotalVisitors
FROM VisitorTable
WHERE Year * 12 + Month <= 2010 * 12 + 1

答案 1 :(得分:0)

只需删除: AND月&lt; = 1? 编辑:还可以: 年份&lt; = 2010年 至: 年份&lt; 2010年

这应该有用吗?

答案 2 :(得分:0)

在这种情况下,您只需使用OR

即可
WHERE YEAR <= 2010 OR MONTH <= 1

更像一般的事情

WHERE YEAR < 2010 OR (YEAR = 2010 AND MONTH <=1)

答案 3 :(得分:0)

不应该是

SELECT SUM(NrOfVisitors) As TotalVisitors FROM VisitorTable WHERE YEAR <= 2010 AND Month >= 1

我刚刚将Month <= 1更改为Month >= 1,因为,2&gt; 1。

这样,如果您有更多的月份,并且如果您不希望它们被计算在内,您可以更改该约束以反映您想要计算的月数。

答案 4 :(得分:0)

SELECT SUM(NrOfVisitors)As TotalVisitors 来自VisitorTable 年份&lt; = 2010年 或(年份= 2010年和月份= 1)