db2 case when

tinatiantian 2009-07-11 03:30:45
db2 "
select a,
(case when b in ('3',‘4’) then '1' else '0' end)d,
count(1) as c
from t
group by a,(case when b in ('3',‘4’) then '1' else '0' end)d
"

报错,查了ms是因为case when 语句后面不可以跟 新字段名(即d)
但是这段会被嵌套在一段sql中必须要别名,这种情况该如何处理?
谢谢大家了
...全文
432 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
tinatiantian 2009-07-12
  • 打赏
  • 举报
回复
我是需要的,因为只是一个sql的一部分
另外,这个问题已经解决了
以下就可以了

db2 "
select a,
(case when b in ('3',‘4’) then '1' else '0' end)d,
count(1) as c
from t
group by a,(case when b in ('3',‘4’) then '1' else '0' end)
"
shijubo 2009-07-11
  • 打赏
  • 举报
回复
可能是group by后面的case不需要指定新字段名,或者把语句写成这样:
select a,d,count(1) as c from (select a,case when b in ('3','4’) then '1' else '0' end d from t) t1 group by a,d

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧