今天有一个需求要使用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