Sql查询特定年份和上一年的数据

时间:2014-01-15 16:33:04

标签: sql sql-server-2008

想知道如何在where子句中给出一年的任何一年及其前一年的数据。示例:如果我将2012年作为where子句的年份,我应该同时获得2012年和2011年的数据。这是在SQL Server 2008中。

Select * from TableA where Year = 2012 

但我希望在同一个查询中使用2011年。

谢谢!

4 个答案:

答案 0 :(得分:1)

您可以使用IN,它允许您定义列表:

Select * from TableA where Year IN (2011, 2012);

答案 1 :(得分:0)

如果您只想将常年放入一次,您可以这样做:

Select *
from TableA
where 2012 in (Year, Year + 1)

答案 2 :(得分:0)

您可能已经考虑过这一点,但您应该明确说明列名而不是 Select *

无论如何,另一个选择是声明和设置年份,然后修改你的WHERE条款。

DECLARE @SelectedYear INT
SET @SelectedYear = 2012
SELECT * FROM TableA WHERE Year = @SelectedYear OR Year = (@SelectedYear-1)

答案 3 :(得分:0)

如果您传递的是单个变量,则可以使用以下两种方式

DECLARE @year AS INT = 2012
SELECT *
FROM tablea
WHERE MyYear = @year OR MyYear = (@year-1)

或者你可以这个

DECLARE @year AS INT = 2012
SELECT *
FROM tablea
WHERE MyYear BETWEEN ((@year-1) AND @year)