为什么有时候groupby报错,要让加上指标字段

为什么有时候group by 报错,要让加上指标字段

FineReport 帆软用户E4Qo7Aqpqe 发布于 2023-3-6 14:05
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
Z4u3z1Lv6专家互助
发布于2023-3-6 14:06

SQL呢?

怎么着也得符合SQL语法呗

  • 帆软用户E4Qo7Aqpqe 帆软用户E4Qo7Aqpqe(提问者) select prod_category_name2, department_name , workshop_name, data_date, case when operation_name = \'负极分切\' then \'负极二次分条\' when operation_name = \'正极分切\' then \'正极二次分条\' when operation_name = \'侧缝焊外观判定及关键尺寸测量\' then \'侧缝焊判定测量\' else operation_name end as operation_name, base_code , factory_stage , product_model , toFloat32(case when operation_name in (\'正极涂布\',\'负极涂布\',\'正极一次分条\',\'正极辊压\',\'正极二次分条\',\'负极一次分条\',\'负极辊压\',\'负极二次分条\',\'切叠\',\'热压\',\'极耳预焊\',\'正极预分\',\'正极分切\',\'负极预分\',\'负极分切\') then toFloat32(output_qty)*0.5 when operation_name in (\'正极合浆\',\'负极合浆\') then toFloat32(output_qty) else toFloat32(output_qty) end) as output_qty, plan_qty, prod_line_code, prod_line_name, work_last_oper_flag, prod_last_oper_flag from zh_dws.dws_mfg_equip_production_h where 1=1 and prod_category_name2 = \'电芯\' AND workshop_name = \'${车间}\' AND factory_stage = \'${工厂}\' ${if(车间 == \'制卷车间\',\"AND prod_last_oper_flag = \'Y\'\",\"AND work_last_oper_flag = \'Y\'\")} ${if(len(日期) == 0,\"and toString(data_date) = formatDateTime(subtractHours(now(),9),\'%Y-%m-%d\')\",\"and toString(data_date) = (\'\" + 日期 + \"\')\")} group by data_date, product_model, prod_category_name2, base_code, factory_stage , workshop_name , department_name , operation_name , prod_line_code, prod_line_name, work_last_oper_flag, prod_last_oper_flag
    2023-03-06 14:35 
  • Z4u3z1 Z4u3z1 回复 帆软用户E4Qo7Aqpqe(提问者) 你这个没得聚合函数 group by都可以不要
    2023-03-06 14:49 
  • 帆软用户E4Qo7Aqpqe 帆软用户E4Qo7Aqpqe(提问者) 回复 Z4u3z1 那为啥group by的时候得加那俩指标字段
    2023-03-06 15:32 
  • Z4u3z1 Z4u3z1 回复 帆软用户E4Qo7Aqpqe(提问者) 你是说case 里面的字段么?因为它都可能成为select的字段 举个简单的例子 ①、select a,(case when b=\'c\' then b else c end) from table 它等效于 ②select a,B from table WHERE b=\'c\' UNION ALL select a,C from table WHERE b<>\'c\' 所以①里面group 就得有b和C
    2023-03-06 15:42 
  • 帆软用户E4Qo7Aqpqe 帆软用户E4Qo7Aqpqe(提问者) 回复 Z4u3z1 懂啦谢谢
    2023-03-06 16:12 
最佳回答
0
yzm339714Lv6中级互助
发布于2023-3-6 14:06

group by 是分组,  用了group by  之后 select 后面只能跟 group by 后面的字段 或者 聚合函数  sum avg 这些

最佳回答
0
就TM你叫夏洛啊Lv6中级互助
发布于2023-3-6 14:10

除了用了聚合函数(sum(),avg())之外的字段,理论上都要放在group by后面,这样才能分组显示

  • 3关注人数
  • 411浏览人数
  • 最后回答于:2023-3-6 14:10
    请选择关闭问题的原因
    确定 取消
    返回顶部