oracle使用wm_concat 进行分组拼接
oracle 的wm_concat 和mysql 的group_concat类似,主要是先分组,然后将分组后输入同组的的内容用","拼接在一期
例子:
SELECT a.period_id,wm_concat( b.activity_id) ACTIVITY_ID,wm_concat(a.lottery_number) LOTTERY_NUMBER,wm_concat(b.period_number) PERIOD_NUMBER,wm_concat(b.total_amount) COUNT,wm_concat(REPLACE(MOBILE, SUBSTR(a.mobile,4,4), '****')) MOBILE,wm_concat(TO_CHAR(b.open_time,'yyyy-mm-dd hh24:mi:ss') ) OPEN_TIME
FROM A5_PPS_SEIZE_LOTTERY a ,a5_pps_seize_activity_period b
WHERE a.period_id=b.period_id
那为什么我还wm_concat 那么多别的字段了?因为出来要返回period_id,mobile外,其他字段也需要返回,所有虽然拼接多了很多字段,但是有些自读是一样的,比如 ACTIVITY_ID等,这些自读返回后 用“,”切割成数组取出第一个就好了。
刚开始 使用ibatis映射时老是报错
Cause: com.ibatis.common.beans.ProbeException: There is no WRITEABLE property named 'ACTIVITY_ID)' in class 'java.lang.Object'
原始简化代码如下:
SELECT *
FROM(SELECT rownum rn,d.*FROM(SELECT a.period_id,wm_concat( b.activity_id)FROM A5_PPS_SEIZE_LOTTERY a ,a5_pps_seize_activity_period bWHERE a.period_id=b.period_idAND a.is_win =1GROUP BY a.period_idORDER BY a.period_id DESC)d)
WHERE rn > 0
AND rn <= 10
发来发现 wm_concat( b.activity_id) 后面要取个别名,才会不报上面那个映射错误,正确写法如下
SELECT *
FROM(SELECT rownum rn,d.*FROM(SELECT a.period_id,wm_concat( b.activity_id) activity_idFROM A5_PPS_SEIZE_LOTTERY a ,a5_pps_seize_activity_period bWHERE a.period_id=b.period_idAND a.is_win =1GROUP BY a.period_idORDER BY a.period_id DESC)d)
WHERE rn > 0
AND rn <= 10
oracle使用wm_concat 进行分组拼接相关推荐
- Oracle 分组拼接字符串
oracle 根据分组拼接字符串,以指定分隔符分割,有两种方式 1)第一种方式,使用 listagg 函数 例子如下: select field1, field2, listagg(field,sep ...
- oracle vm concat指定分隔符,重写Oracle的wm_concat函数,自定义分隔符、排序
oracle中,wm_concat函数是一个聚合函数,和mysql中的group_concat函数类似,不过group_concat函数比较强大,可以定义分隔符和排序,当然所谓强大是相对的,这里假使我 ...
- 数据库语句常见方法:(随机生成Id,结合CSAE...WHEN的使用,分组拼接字段数据
随机生成ID/UUID 1.获取IDSELECT newid() 2.将UUID值中的-替换SELECT REPLACE( newid(), '-', '' ) 3.获取ID并转小写SELECT LO ...
- Oracle的wm_concat()函数与Mysql的group_concat()函数
这两个函数的作用是相同的,它们的功能是:实现行转列功能,即将查询出的某一列值使用逗号进行隔开拼接,成为一条数据. 1.Oracle的wm_concat()函数 2.Mysql的group_concat ...
- Mybatis中(#{ })模糊查询like(使用oracle的concat函数嵌套拼接SQL)
需求: 模糊查询需要左右各拼接一个'%',如:like %key% . 项目情况: mybatis中动态传参一般采用占位符#{key}.使用数据库:orecle. 错误的尝试: 尝试使用: like ...
- oracle不连续得时间如何分组,Oracle按不同时间分组统计的sql
Oracle按不同时间分组统计的sql以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Oracle按不同时间分组统计的s ...
- Oracle中wm_concat函数报错解决方法
Oracle中wm_concat函数报错解决方法 参考文章: (1)Oracle中wm_concat函数报错解决方法 (2)https://www.cnblogs.com/52net/archive/ ...
- oracle按层级分组,oracle按照指定列分组合计group by rollup()
group by rollup() 按分组合计 select grouping(status),status,owner,object_type,count(*) from dba_objects w ...
- Oracle数据库wm_concat()函数的使用方法
oracle数据库中wm_concat(column)函数使我们经常会使用到的,下面就教您如何使用oracle数据库wm_concat(column)函数实现字段合并 如: shopping: --- ...
最新文章
- fastjson 的作者,在阿里内网挨骂了?!
- 那些承包欧美学生论文的肯尼亚人:平台抽成一半,学生工日薪200
- 一款全屏图片滑动js 插件 超快捷
- Mysql——case函数
- Faster-rcnn详解
- 避免某个子窗体重复运行的方法(showdialog、show)
- github里的默认域_恕我直言!你对Python里的import一无所知
- 服务器运行容器工具大盘点!
- java 类锁如何获得_Java Synchronized获得类的锁和获得对象的锁有什么区别呢?
- pytorch nn.Softmax
- MySQL group by语句用法
- 1.4补充 三态缓存(tristate buffer)与 多路复用器(Multiplexers)
- rest-assured实战
- Error 遇到错误:请求通道在等待 00:01:00 以后答复时超时。增加传递给请求调用的超时值,或者增加绑定上的 SendTimeout 值。分配给此操作的时间可能已经是更长超时的一部分
- 易宝典——玩转O365中的EXO服务 之五十 如何知道微软管理员进行了哪些操作
- C++提高进阶,你知道多少?
- 计算机休眠唤醒后分辨率变小了,WIN10休眠唤醒后,所有的窗口都跑到了左上角,如何解决?...
- 三种近场通信技术的特点
- php判断浏览器语言国内外,PHP判断浏览器语言
- 飞机大战之-添加背景