报错

SELECT COUNT(A = '*' OR NULL) AS A,COUNT(B = '*' OR NULL) AS B,COUNT(C = '*' OR NULL) AS C,COUNT(D = '*' OR NULL) AS D FROM "table1"

idABCD
1*
2**
3*
4*
5*
6*
image.png

请问为啥会报错,应该怎么解决

FineReport LOE 发布于 2023-5-29 09:29
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
zsh331Lv8专家互助
发布于2023-12-22 18:13

SELECT id,

 sum(case when  A='*' or A is null then 1 else 0 end) AS A,

 sum(case when  B='*' or A is null then 1 else 0 end) AS B,

 sum(case when  C='*' or A is null then 1 else 0 end) AS C,

 sum(case when  D='*' or A is null then 1 else 0 end) AS D

FROM

 tabname group by id

-----------

最佳回答
0
坚定的小帆薯Lv7高级互助
发布于2023-5-29 09:36(编辑于 2023-5-29 10:08)

【补充回答1】帆软运行也是可以的,你可以尝试在数据库跑一下,可以说明是帆软驱动问题,升级下驱动看看

image.png

【初始回答】你这个是mysql么,在数据库软件运行还是在帆软设计器运行。

我这边是可以的吖

image.png

  • LOE LOE(提问者) 在帆软上面运行的
    2023-05-29 09:37 
  • 坚定的小帆薯 坚定的小帆薯 回复 LOE(提问者) 如上补充回答,或者直接换个下方看看,将COUNT(A = \'*\' OR NULL) 换成COUNT(NULLIF(a, \'\'))
    2023-05-29 10:14 
最佳回答
0
年年plusLv5中级互助
发布于2023-5-29 09:38

你这么修改一下 试试   count改成sum( case when  A='*' then 1 when A is null then 1 else 0 end )

  • LOE LOE(提问者) 还是报错
    2023-05-29 09:50 
  • 年年plus 年年plus 回复 LOE(提问者) 我看你这可以直接count(id)的结果也就是你需要的啊
    2023-05-29 10:01 
  • 4关注人数
  • 363浏览人数
  • 最后回答于:2023-12-22 18:13
    请选择关闭问题的原因
    确定 取消
    返回顶部