动态筛选列排序

对动态列汇总的值进行排序,这样写的order by 不生效:

SELECT ${if(len(col)=0,'*',REPLACE(REPLACE(REPLACE(REPLACE(col,'预算收入','sum(预算收入) as 预算收入'),'预算成本','sum(预算成本) as 预算成本'),'实际收入','sum(实际收入) as 实际收入'),'实际成本','sum(实际成本) as 实际成本')  )}

FROM TEMP5 

${if(len(col)<1,"","group by "+ REPLACE(REPLACE(REPLACE(REPLACE(col,',预算收入',''),',预算成本',''),',实际收入',''),',实际成本','') )}

${if(len(col)<1,"","order by "+ REPLACE(REPLACE(REPLACE(REPLACE(col,',预算收入',''),',预算成本',''),',实际收入',''),',实际成本','') )}

 我想按照实际收入、预算收入排序。。。。

IceBall09 发布于 2022-12-2 08:58 (编辑于 2022-12-2 08:58)
1min目标场景问卷 立即参与
回答问题
悬赏:0 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
lxy2Lv6中级互助
发布于2022-12-2 09:04

你这样replace得到的是字符串,并不会真的进行运算的,你应该写if else,如if(len($col)=0)begin 语句1 end

else begin 语句2 end分开这样写比较好

最佳回答
0
snrtuemcLv8专家互助
发布于2022-12-2 09:09

你先模拟输入col值,看看得到什么样的sql语句吧,估计是你的语句有问题

image.png

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