首页 > 数据库 > 数据库开发技术 > 你以为你以为的就是你以为的吗
上周有个事情,一个开发写的SQL,我有点接受不了。原始的是select from t group by 后面跟了几十列。我当时也是震惊到了,为什么?他和我解释了一下,我当时真是想骂人。我来用几个表简单说明一下。我这里不用真实表和配置,我用个简单的表举例说明。比如说有一个表是流程表,大家可以看到有5个部门,每个部门做两件事,发工资和发奖金。(这种喜闻乐见的事情大家能快速理解)。如图1.当然真实的不是这么简单的列,他有几十列。表的行数也远超10行。
图1
需求是显示一个部门有几个配置的事件,多个事件用逗号连接起来。至于其他列也显示出来,但是不重要,主要是看这几个合并的。我初看这个想到说,这个SJ的字段就不应该存在这里,应该是一个部门表中直接存进去不就行了?如图2.开发说是的,但是接手就这样,之前也不知道谁想的这样做。
图2
有的时候不是什么人都能做设计,绝大多数人其实不应该去设计。就是实现就行了,设计的人一定要是懂数据库的,才知道怎么做最佳。
最后,废了一会儿脑细胞给写出来了。用到了第一次使用的listagg这个函数, 用了with as 的高级写法。其实吧,这种就上图2就全解决了,结果不专业的人留的坑,就这样。用这两个结合就避免了group by 几十列的尴尬境地。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/637517/viewspace-2910523/ ,如需转载,请注明出处,否则将追究法律责任。