sql-server-2008 - 特定年份的Sql查询和年的以前数据

  显示原文与译文双语对照的内容

想知道如何在in子句中获得任何年份及它的年份的数据。 例如:如果在where子句,2012年,则应该同时得到 2012和 2011的数据。 在 SQL Server 2008中。


Select * from TableA where Year = 2012 

但我希望在同一查询中使用 2011.

谢谢!

时间: 作者:

你可以使用 IN 插件,它允许你定义列表:


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

作者:

如果你只希望一次性放置常量,则可以执行以下操作:


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

作者:

你可能已经考虑过这个问题,但是你应该明确地声明列名而不是 Select *

无论如何,另一个选项是声明并设置年份,然后修改 WHERE 子句。


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

作者:

如果传递一个变量,可以按以下 2个方法进行


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)

作者:
...