我有一个包含年份和月份的表格,如下所示: -
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。
修改
这只是演示行为的一个例子。 月份和年份可能会有所不同。因此,请创建一个适合任何年份和任何月份的条件的答案。
如何使用以下条件创建查询?
此致 维沙尔
答案 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)