日期:2014-05-17  浏览次数:20615 次

按照表设定的区间进行查询如何弄
领导要求按照进厂的月份进行设定 每个人分值
列如
参数如下
进厂时间        值
1个月-6个月      3
7个月-12个月     5
13个月-15个月    7
16个月-20个月    8

要求查询结果如下
姓名    进厂时间    得值
张三    5个月       3
李四    8个月       5
王五    17个月      8

这些表如何设计,查询语句怎么写,帮忙找一个示例 ,谢谢.

------解决方案--------------------
with tb(jcsjbegin, jcsjend, value) as
(
select 1,6,3 union all
select 7,12,5 union all
select 13,15,7 union all
select 16,20,8 
)
, tb2(name, rj) as
(
select 'zs', 5 union all
select 'ls', 8 union all
select 'wu', 17
)
select tb2.*, tb.value from tb2
inner join tb on tb2.rj >= tb.jcsjbegin and tb2.rj < tb.jcsjend

------解决方案--------------------
最后的17个月怎么算出来的?
------解决方案--------------------
表里肯定有一个开始时间
用当前时间 - 开始时间 的 值 between 1 and 6  取 3
------解决方案--------------------

create table #Temp
(
begindate datetime,
[name] varchar(50) ,
score int
)

insert into #Temp values('2013-5-1','张三',0)
insert into #Temp values('2013-4-1','lishi',0)
insert into #Temp values('2011-1-1','wangwu',0)

select * from #Temp

select [name],(case when m between 1 and 6 then 3 when m between 7 and 10 then 5 else 0 end) as '粉色' from ( select [name],datename(m,(getdate()- begindate)) m from #Temp) t