多列合并成一列,并用逗号分隔,但是要有值的才分隔,没有值的数据过滤掉,orcal要怎么写
请给出建表语句和插入数据sql以及题目要求,我可以试着写一下
1、多列合并成一列,直接用 || 即可
WITH t AS ( SELECT '' cola, 'a' colb, 'b' colc FROM dual )
SELECT ( CASE WHEN cola IS NULL THEN '' ELSE cola || ',' END ) ||
( CASE WHEN colb IS NULL THEN '' ELSE colb || ',' END ) || colc
FROM t;
1.该用高级语言就用高级语言,很多时候高级语言一个循环的事,你纯sql就要写好几百行代码
2.你这表结构明显有问题,就应该定义成主从表,什么列1列2列3列4,你也不嫌烦
先用管道符拼接合并,然后外层再套一个regexp_replace正则替换,把多个连续的逗号替换成一个逗号,这样比较省事。
当然像上面那样先判断是不是为空再来决定要不要拼逗号也是一种好的方法,只是字段一多,case when 就也要写很多了