oracle 查询group by的字段之外的字段

今天有一个需求要使用group by,oracle的的group by的用法是:select后面的字段要属于group by的字段,并且order by后面的字段也属于group by的字段里面。

但是我要select的字段多于group by的字段,怎么办呢?

1.查询字段使用的oracle的版本

select * from nls_database_parameters;

我的是12.2.0.1.0,也就是12c

2.两种group by的方法

    (1).oracle10版本及其以前,使用 wm_concat(column)函数,这个函数默认使用 英文逗号分割

select wt.woekday,wm_concat(wt.title)

from (select * from NEWSTAFF_WORK_TEMPLETE WHERE w where w.positionid='1' order by w.sorts)wt

group by wt.workday

(2).oracle11及其以后的版本,使用LISTAGG(,)函数,还带了排序功能,很强

select 
t.workday,
listagg(t.title,'#') within group(order by t.sorts)
from NEWSTAFF_WORK_TEMPLETE t
where t.positionid='1'
group by t.workday

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值