动态SQL老是报错哪位大哥能帮我纠正下

SELECT 

  CASE

    WHEN age BETWEEN 0 AND 30 THEN '30岁及以下'

    WHEN age BETWEEN 31 AND 40 THEN '31岁-40岁'

    WHEN age BETWEEN 41 AND 50 THEN '41岁-50岁'

    WHEN age BETWEEN 51 AND 55 THEN '51岁-55岁'

    ELSE '55岁以上'

  END AS age_group,

  COUNT(1)

FROM  sdhy_dwd.dwd_rl_ryjbxx

where 1=1 ${if(organ == "集团整体","","AND fatherorg_shortname = '${organ}'")}

GROUP BY age_group

ORDER BY MIN(age_group)

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

单选

SELECT 

  CASE

    WHEN age BETWEEN 0 AND 30 THEN '30岁及以下'

    WHEN age BETWEEN 31 AND 40 THEN '31岁-40岁'

    WHEN age BETWEEN 41 AND 50 THEN '41岁-50岁'

    WHEN age BETWEEN 51 AND 55 THEN '51岁-55岁'

    ELSE '55岁以上'

  END AS age_group,

  COUNT(1)

FROM  sdhy_dwd.dwd_rl_ryjbxx

where 1=1 ${if(organ == "集团整体","","AND fatherorg_shortname =  '"+organ+"'")}

GROUP BY age_group

ORDER BY MIN(age_group)

多选

SELECT 

  CASE

    WHEN age BETWEEN 0 AND 30 THEN '30岁及以下'

    WHEN age BETWEEN 31 AND 40 THEN '31岁-40岁'

    WHEN age BETWEEN 41 AND 50 THEN '41岁-50岁'

    WHEN age BETWEEN 51 AND 55 THEN '51岁-55岁'

    ELSE '55岁以上'

  END AS age_group,

  COUNT(1)

FROM  sdhy_dwd.dwd_rl_ryjbxx

where 1=1 ${if(organ == "集团整体","","AND fatherorg_shortname in ('"+organ+"')")}

GROUP BY age_group

ORDER BY MIN(age_group)

organ 设置如下

image.png

最佳回答
0
华莉星宸Lv7资深互助
发布于2025-5-23 16:34(编辑于 2025-5-23 16:37)

SELECT CASE

         WHEN age BETWEEN 0 AND 30 THEN

          '30岁及以下'

         WHEN age BETWEEN 31 AND 40 THEN

          '31岁-40岁'

         WHEN age BETWEEN 41 AND 50 THEN

          '41岁-50岁'

         WHEN age BETWEEN 51 AND 55 THEN

          '51岁-55岁'

         ELSE

          '55岁以上'

       END AS age_group,

       COUNT(1)

  FROM sdhy_dwd.dwd_rl_ryjbxx

 where 1 = 1

 ${if(organ == "集团整体", "", "AND fatherorg_shortname = '"+organ+"'") }

 GROUP BY CASE

            WHEN age BETWEEN 0 AND 30 THEN

             '30岁及以下'

            WHEN age BETWEEN 31 AND 40 THEN

             '31岁-40岁'

            WHEN age BETWEEN 41 AND 50 THEN

             '41岁-50岁'

            WHEN age BETWEEN 51 AND 55 THEN

             '51岁-55岁'

            ELSE

             '55岁以上'

          END

order by age_group

  • 2关注人数
  • 33浏览人数
  • 最后回答于:2025-5-23 16:37
    请选择关闭问题的原因
    确定 取消
    返回顶部