帆软部分公式及sql生成(月份、季度取数)

以下均为帆软公式:

1.获得当前月往后推三月,如当前为8月,获得"9-11月"字样
if(DATA_MONTH_BOX\<10,(DATA_MONTH_BOX+1)+'-'+(DATA_MONTH_BOX+3)+'月', if(DATA_MONTH_BOX=10,DATA_YEAR_BOX+'年11月-'+NEXT_YEAR+'年1月',
if(DATA_MONTH_BOX=11,DATA_YEAR_BOX+'年12月-'+NEXT_YEAR+'年2月', if(DATA_MONTH_BOX=12,$NEXT_YEAR+'年1-3月',''))))

获得后一月,如当前8月,获得"9月",当前为12月,获得"+1年1月"

IF(DATA_MONTH_BOX\<12,(DATA_MONTH_BOX+1)+'月',
if(DATA_MONTH_BOX=12,NEXT_YEAR+'年1月',''))

获得后两月

IF(DATA_MONTH_BOX\<11,(DATA_MONTH_BOX+2)+'月',
if(DATA_MONTH_BOX=11,NEXT_YEAR+'年1月',
IF(DATA_MONTH_BOX=12,NEXT_YEAR+'年2月','')))

获得后三月

IF(DATA_MONTH_BOX\<10,(DATA_MONTH_BOX+3)+'月',
if(DATA_MONTH_BOX=10,NEXT_YEAR+'年1月',
IF(DATA_MONTH_BOX=11,NEXT_YEAR+'年2月',
IF(DATA_MONTH_BOX=12,NEXT_YEAR+'年3月',''))))


2.获得1-上月份,当前月为1月时,获得"去年1-12月"
if(月份 != 1 \&\& 月份 != 2, 月份 + '月占比比1-' + (月份 - 1) + '月', if(月份 = 1, 月份 + '月占比比去年1-12月', '2月占比比1月'))

sql语句示例:

sum(case when t.data_year='{去年}' and t.data_month='{月份}' then t.num else 0 end ) as 厂家同期当月,
{if(月份=='2',"sum(case when t.data_year='"+年度+"' and t.data_month='1' then t.num else 0 end ) as 厂家1至上月累计,","")} {if(月份=='1',"sum(case when t.data_year='"+去年+"' then t.num else 0 end ) as 厂家1至上月累计,","")}
${if(月份!='1' && 月份!='2',"sum(case when t.data_year='"+年度+"' and t.data_month<="+(月份-1)+" then t.num else 0 end ) as 厂家1至上月累计,","")}

3.获得当前季度
if(月份 % 3 = 0, 月份 / 3, Int($月份 / 3) + 1) + '季度'

sql语句示例:

设置控件为
{当季度_s}=if(月份 % 3 = 0, 月份 / 3, Int(月份 / 3) + 1)

sum(case when t.data_year='{年度}' and (t.data_month\>=(1+3\*({当季度_s}-1)) and t.data_month<=(${当季度_s}*3)) then t.num else 0 end ) as 厂家季度销量,

当数据类型为t.yue1这种时

JOINARRAY(RANGE(if(月份%3=0,月份/3-1,Int(月份/3))\*3+1,if(月份%3=0,月份/3-1,Int(月份/3))*3+3,1),"+t.yue")

4.获得1-当前季度
'1-' + if(月份 % 3 = 0, 月份 / 3, Int($月份 / 3) + 1) + '季度'

sql语句示例:

sum(case when t.data_year='{年度}' and t.data_month\<=({当季度_s}*3) then t.num else 0 end ) as 厂家季度累计,
sum(case when t.data_year='{去年}' and t.data_month\<=({当季度_s}*3) then t.num else 0 end ) as 厂家同期季度累计,

5.获得1-上季度,当前季度为1时,获得"去年1-4季度",此处示例为"当季度占比比1-上季度"
if(if(月份 % 3 = 0, 月份 / 3, Int(月份 / 3) + 1)!='1',if(月份 % 3 = 0, 月份 / 3, Int(月份 / 3) + 1) + '季度占比比1-' + (if(月份 % 3 = 0, 月份 / 3, Int($月份 / 3) + 1) - 1) + '季','1季度占比比去年1-4季度')

sql语句示例:

${if(当季度_s!='1',
"sum(case when t.data_year='"+年度+"' and (t.data_month>=1 and t.data_month<="+((当季度_s-1)*3)+") then t.num else 0 end ) as 厂家1至上季度累计,",
"sum(case when t.data_year='"+去年+"' then t.num else 0 end ) as 厂家1至上季度累计,")}

当数据库一年数据放在一条内时:

IF(
if(月份 % 3 = 0, 月份 / 3, Int(月份 / 3) + 1)!='1', JOINARRAY( RANGE( (if(月份%3=0,月份/3-1,Int(月份/3))-1)*3+1,
(if(月份%3=0,月份/3-1,Int($月份/3))-1)*3+3,
1
)
,"+t.yue"
),
'10+t.yue11+t.yue12'
)

6.获得当季度,如当前3月,获得"1季度"
if(月份%3=0,月份/3,Int($月份/3)+1)

sql语句示例:

获得季度累计的月份计算sql,如当前月为4月,获得1-2季度即1-6月的月份累计sql

sum(case when t.data_year='{年度}' and (t.data_month\>=(1+3\*({当季度_s}-1)) and t.data_month<=(${当季度_s}*3)) then t.num else 0 end ) as 厂家季度销量,

如果是一年的销量数据放在一条数据内:

JOINARRAY(RANGE(1,if(月份%3=0,月份/3-1,Int($月份/3))*3+3,1),"+t.yue")

相关推荐
爱丶不疚2 小时前
Eval: Agent 说的 Eval 是什么?从单测、TDD 到 Sentry 聊起
前端·ai编程·vibecoding
求道於盲2 小时前
python中的类型标注
前端
计算机魔术师2 小时前
从硅谷测试到全球铺开,ChatGPT广告的10亿美元秘密
前端
专业抄代码选手3 小时前
08|Fiber 上的 `useState`:状态终于属于具体组件
前端·javascript·react.js
默_笙3 小时前
😭 Vibe Coding 翻车实录:AI 编程为什么必须先写"剧本"
前端·javascript
LEE3 小时前
原来 Claude Code 最厉害的工具,一行代码都不写
前端·后端
parade岁月3 小时前
为了给表格加虚拟滚动而选了 vxe-table?也可以考虑下这个
前端·vue.js
打呵欠的猫3 小时前
一个 Hook 让 AI 每次写文件前自动检查编码规范,违规代码再也提交不进来
前端·ai编程·代码规范
恋猫de小郭4 小时前
Android 17 + OkHttp 5.5.0 ,全新 ECH 下你的 HTTPS 域名可以请求时被安全隐藏
android·前端·flutter
后除4 小时前
从零到一: 创建一个 TypeScript 7 项目
前端·webpack·typescript