【问题标题】:Sql query for a particular year and the previous year's datasql查询特定年份和上一年的数据
【发布时间】:2014-01-15 16:33:04
【问题描述】:

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

Select * from TableA where Year = 2012 

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

谢谢!

【问题讨论】:

    标签: sql sql-server-2008


    【解决方案1】:

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

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

    【讨论】:

    • (@Year 和@Year-1)听起来不错。我不知道使用“IN”。谢谢!
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

        如果你传递一个单一的变量,你可以通过以下两种方式来实现

        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)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-01-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多