Sql在同一行上的条件更多

时间:2013-05-12 11:33:42

标签: sql sql-server sql-server-2008

你好,这似乎是一个微不足道的问题,但不知怎的,它不是,我在查询时很简单

where ([Year] >= 2012 and [Month] >= 12) and ([Year] <= 2013 and [Month] < 1)

并且此查询排除任何行,因为有条件月&gt; 12和月&lt; 1,那么如何做到这将返回2012.12的行,所以只有当年是2012年并且检查月份时才检查月份&gt; = 12&lt; 1仅适用于年份为2013年的行?

我应该提一下,我的sql表只有字段

[Year] [int] NOT NULL,
[Month] [int] NOT NULL,
[Value] [float] NOT NULL,

2 个答案:

答案 0 :(得分:0)

there fore i want like two condition to check, if year 2012 and month >= 12 and if year 2013 and month <2 should return two rows 2012.12 and 2013.1

@kosnkov:我在这里猜测你是在询问如何找到日期在开始日期之后的指定月份内的行。你熟悉DateDiff()函数吗?它需要一个DateTime列。

http://msdn.microsoft.com/en-us/library/ms189794%28v=sql.90%29.aspx

答案 1 :(得分:-2)

根据您的要求,您需要检查具有or条件的条件,如下所示 -

关于[月]这个月的价值将是1到12之间的一件事。它永远不会少于1,也永远不会超过12.因此,为了实现您想要的结果,您可以使用以下查询 -

where ([Year] >= 2012 and [Month] = 12) or ([Year] < 2013 and [Month] < 2)

希望这能解决您的问题。

为了获得您评论的输出,我们可以连接年份和月份部分,并可以检查如下 -

where ([Year]*100+[Month] >= 201212 and [Year]*100+[month] < 201302)

此条件仅提供2012年和12月或2013年的记录以及少于2的月份