在帆软里写sqlserver数据库计算周数相加的语法

1.sqlsever数据库有表table,table有varchar(6)类型的a,b两个字段

a,b字段数据举例:202201  表示2022的年第一周

2.帆软参数栏有一个参数c,类型为数字

参数c数据举例: 1 表示1周

目标是想写一个数据集sql

select  *  from 表table

where a<= b+c

请问应该怎么写?需要考虑b+c跨年的情况吗?

FineReport SQL 狂奔的小蜗牛 发布于 2022-12-9 15:42
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
用户k6280494Lv6资深互助
发布于2022-12-9 15:53

这玩意写得脑壳痛

image.png

with test_A as (

select '202232' test,

       '202230' test1,

       '测试数据' txt

)

select * from test_A

where test1>=(

select 

case when SUBSTRING(CONVERT(char(10),CONVERT(int,test) + ${p_numberEditor0}), 5, 2) < 52 then CONVERT(int,test) + ${p_numberEditor0}

when SUBSTRING(CONVERT(char(10),CONVERT(int,test) + ${p_numberEditor0}), 5, 2)-52 < 10 then CONVERT(char(4),CONVERT(int,SUBSTRING(test,1,4)) + 1) + '0' +CONVERT(char(2),(SUBSTRING(CONVERT(char(10),CONVERT(int,test) + ${p_numberEditor0}), 5, 2)-52))

when SUBSTRING(CONVERT(char(10),CONVERT(int,test) + ${p_numberEditor0}), 5, 2)-52 > 9 then CONVERT(char(4),CONVERT(int,SUBSTRING(test,1,4)) + 1)+CONVERT(char(2),SUBSTRING(CONVERT(char(10),CONVERT(int,test) + ${p_numberEditor0}), 5, 2)-52)

end

from test_A) 

  • 狂奔的小蜗牛 狂奔的小蜗牛(提问者) 大佬,能简单描述下吗,你这太复杂了。。。 我看到52知道包含跨年了,看到9,知道包含补0了,但是也太复杂了,我有点看不懂,描述下,或者有没有其他简单的方法
    2022-12-09 16:08 
  • 用户k6280494 用户k6280494 回复 狂奔的小蜗牛(提问者) 我没有简单方法,你直接改成把表跟字段替换成你自己,然后跑一遍不就行了
    2022-12-09 16:27 
  • 用户k6280494 用户k6280494 回复 狂奔的小蜗牛(提问者) 不行就远程吧
    2022-12-09 16:28 
  • 狂奔的小蜗牛 狂奔的小蜗牛(提问者) 回复 用户k6280494 可以,看你时间远程下
    2022-12-12 10:46 
  • 用户k6280494 用户k6280494 回复 狂奔的小蜗牛(提问者) 加QQ吧
    2022-12-12 10:49 
最佳回答
0
cheng1217Lv5见习互助
发布于2022-12-9 16:29

where (b+c)>= '${a}'  ?

  • 3关注人数
  • 340浏览人数
  • 最后回答于:2022-12-9 16:29
    请选择关闭问题的原因
    确定 取消
    返回顶部