工作小技巧--Oracle列转行函数 listagg 的使用

2024-10-12 23:00:48

1、首先叙述一下业务需求,我们有一张车辆位置信息表,其中包含:车牌号、年、月、日、时、经度、维度 7列信息(车辆上的定位设备会定时上报),我们需要通过SQL语句获取一辆车在特定某一天(年月日)有多少个小时会上报经纬度信息(即上报信息的设备工作正常),以及都是哪些小时在上报(一个字符串表示即可,比如 20,21,22 表明这一天20点21点22点上报了经纬度信息)。建表语句如下:CREATE TABLE CARINFO ( CARNO VARCHAR2(32), CYEAR INTEGER, CMONTH INTEGER, CDAY INTEGER, CHOUR INTEGER, CLON NUMBER, CLAT NUMBER );最后需要达到的查询结果如图3示。

工作小技巧--Oracle列转行函数 listagg 的使用工作小技巧--Oracle列转行函数 listagg 的使用工作小技巧--Oracle列转行函数 listagg 的使用

4、命令解释: listagg(chour, ',') within group(order by chour) , 将一个分组内的 chour 列的值排序后(order by chour)通过逗号连接起来。注意,该函数是Oracle数据库内置函数,只有针对Oracle数据库的SQL语句才可以使用!

猜你喜欢