查询与月份和年份相关

时间:2013-12-19 16:39:42

标签: sql sql-server-2012

我有一个包含年份和月份的表格,如下所示: -

Id Year Month Value

1  2012 12    100

2  2013 1     200

3  2013 2     300

4  2013 12    200

5  2012 11    200

我想创建一个查询,它为我提供(年> = 2012和月> = 12)以及(年=< 2013和月=< 12)即它应该给我Id 1,2,3,4。

修改

这只是演示行为的一个例子。 月份和年份可能会有所不同。因此,请创建一个适合任何年份和任何月份的条件的答案。

如何使用以下条件创建查询?

此致 维沙尔

5 个答案:

答案 0 :(得分:1)

这可以让你得到你想要的东西

SELECT id 
FROM YourTable 
WHERE (Year = '2013' OR (Year = '2012' AND Month = '12'))

答案 1 :(得分:1)

我希望我现在了解你的情况(“我希望2012年12个月,2013年1到12个月的数据”):

SELECT Id FROM TableName WHERE (Year = 2012 AND Month = 12) OR (Year = 2013) ORDER BY Id

这假设不能有一个月> 12或者< 1; - )

答案 2 :(得分:0)

根据评论进行修改

对于给定的@yearIN

select * from table 
where (year = @yearIN and month != 12) or (year = (@yearIN-1) and month = 12)

我认为这就是你想要的

select * from table 
where (year = 2013 and month != 12) or (year = 2012 and month = 12)

我认为这使得你所寻找的逻辑清晰 - 我希望你不要在2011年的最后一个月

答案 3 :(得分:0)

我认为最简单的方法是将列转换为更大的整数(或字符串)。假设值是整数:

select id
from table
where year*100+month between 201212 and 201312;

答案 4 :(得分:0)

declare @YearFrom int, @YearTo int, @MonthFrom int, @MonthTo int
set @YearFrom = 2012
set @YearTo = 2013
set @MonthFrom = 12
set @MonthTo = 12

select ID, YEAR, MONTH, Value 
from [yourtable]
WHERE (year = @yearfrom AND month >= @monthfrom or year > @yearfrom) 
AND (year = @yearto AND month <= @monthto or year < @yearto)
相关问题