首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql,等大神判断年月份

2013-10-17 
求一个sql,等大神判断年月份如下图 我2013年9月份实际应收的价格应该是330元,要判断一下 我DXEffectDate日

求一个sql,等大神判断年月份


如下图 我2013年9月份实际应收的价格应该是330元,要判断一下 我DXEffectDate日期是否小于年份和月份 如果大于的话 就显示实际的价格 要是小于才按着抵消和实际
打的费用  我想着通过datepart(yyyy,DXEffectDate)得到年和datepart(mm,DXEffectDate)得到月份去比较_year和month值  用函数convert()
convert(varchar(7),DXEffectDate,120)

select convert(varchar(7),getdate(),120)
得到格式 
/*
2013-10  -->以这种格式去判断
*/


[解决办法]
改成>有用不?
[解决办法]
我把外层的2个case when简化了一下:


select Number400,_year ,_Month , a_FixedFee ,FeeTypeName,
Fee1,Fee2,Fee3,Fee4,
Consumer1,Consumer2,Consumer3,Consumer4,DXEffectDate,

case when (datepart(yy,DXEffectDate) >=_year 
           and datepart(mm,DXEffectDate) > _Month)
          or (rec>a_FixedFee) 
          then rec 
     else a_FixedFee 
end as rec,  
                                                  -->rec字段
case when pay>c_FixedFee then pay else c_FixedFee end as pay,  -->pay字段  

case when (datepart(yy,DXEffectDate) >=_year 
           and datepart(mm,DXEffectDate) > _Month)
          or rec>a_FixedFee 
          then rec 
     else a_FixedFee 
end - case when pay>c_FixedFee then pay else c_FixedFee end as profit  -->profit字段

from 
(

select a.Number400,b._year ,b._Month ,a.FeeType, 
       a.FixedFee as a_FixedFee,a.DXEffectDate,a.FeeTypeName,
       a.Fee1,a.Fee2,a.Fee3,a.Fee4,
       b.Consumer1,b.Consumer2,b.Consumer3,b.Consumer4,
       c.FixedFee as c_FixedFee,

case a.FeeType
when 1 then a.Fee1*b.Consumer1+a.Fee2*b.Consumer2
when 2 then a.Fee3*b.Consumer3+a.Fee4*b.Consumer4
end as rec,

case c.FeeType
when 1 then c.Fee1*b.Consumer1+c.Fee2*b.Consumer2
when 2 then c.Fee3*b.Consumer3+c.Fee4*b.Consumer4
end as pay

from S_SaleManager a
inner join S_MonthlyData b on a.Number400=b.Number400
inner join S_Manager400 c on b.Number400=c.Number400
) t  
where t._year=2013 and t._Month=10

热点排行