select u.user_name,
(
select listagg(g.org_name, '-') within group(order by rownum desc )
from org g
start with g.org_id = u.org_id
connect by prior g.porg_id = g.org_id
and rownum < 4
)
from users u
where u.USER_ID = 'wj';
说明:将指定用户的信息,与该用户的机构信息遍历后的值合并的sql;
附上表,和实验结果
org 机构表
user 用户表
导出的sql如下
-------------------------------------------------------- -- 文件已创建 - 星期日-八月-23-2015 -------------------------------------------------------- -------------------------------------------------------- -- DDL for Table ORG -------------------------------------------------------- CREATE TABLE "HR"."ORG" ( "ORG_ID" VARCHAR2(32 BYTE) DEFAULT SYS_GUID(), "ORG_NAME" VARCHAR2(32 BYTE), "PORG_ID" VARCHAR2(32 BYTE) ) SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "USERS" ; -------------------------------------------------------- -- DDL for Table USERS -------------------------------------------------------- CREATE TABLE "HR"."USERS" ( "USER_ID" VARCHAR2(32 BYTE) DEFAULT sys_guid(), "USER_NAME" VARCHAR2(32 BYTE), "ORG_ID" VARCHAR2(32 BYTE) ) SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "USERS" ; COMMENT ON COLUMN "HR"."USERS"."USER_ID" IS '????'; COMMENT ON COLUMN "HR"."USERS"."USER_NAME" IS '??????'; COMMENT ON COLUMN "HR"."USERS"."ORG_ID" IS '????????id'; COMMENT ON TABLE "HR"."USERS" IS '??????'; REM INSERTING into HR.ORG SET DEFINE OFF; Insert into HR.ORG (ORG_ID,ORG_NAME,PORG_ID) values ('3644F8D3841047A2B9477D039876F1B9','四川总部',null); Insert into HR.ORG (ORG_ID,ORG_NAME,PORG_ID) values ('D676FBE02AD04614AF5446908CC95264','四川分中心成都','3644F8D3841047A2B9477D039876F1B9'); Insert into HR.ORG (ORG_ID,ORG_NAME,PORG_ID) values ('CEC3BEEFB74C4510939343CE019049DA','成都营业部','D676FBE02AD04614AF5446908CC95264'); Insert into HR.ORG (ORG_ID,ORG_NAME,PORG_ID) values ('dEC3BEEFB74C4510939343CE019049DA','营业寿险部','CEC3BEEFB74C4510939343CE019049DA'); Insert into HR.ORG (ORG_ID,ORG_NAME,PORG_ID) values ('CrC3BEEFB74C4510939343CE019049DA','寿险分管经理','dEC3BEEFB74C4510939343CE019049DA'); Insert into HR.ORG (ORG_ID,ORG_NAME,PORG_ID) values ('CwC3BEEFB74C4510939343CE019049DA','寿险分管小组','dEC3BEEFB74C4510939343CE019049DA'); REM INSERTING into HR.USERS SET DEFINE OFF; Insert into HR.USERS (USER_ID,USER_NAME,ORG_ID) values ('zs','张珊','CwC3BEEFB74C4510939343CE019049DA'); Insert into HR.USERS (USER_ID,USER_NAME,ORG_ID) values ('yzx','杨正弦','CwC3BEEFB74C4510939343CE019049DA'); Insert into HR.USERS (USER_ID,USER_NAME,ORG_ID) values ('hsl','和侍郎','CrC3BEEFB74C4510939343CE019049DA'); Insert into HR.USERS (USER_ID,USER_NAME,ORG_ID) values ('xh','徐汇','CrC3BEEFB74C4510939343CE019049DA'); Insert into HR.USERS (USER_ID,USER_NAME,ORG_ID) values ('wj','王建','CEC3BEEFB74C4510939343CE019049DA'); Insert into HR.USERS (USER_ID,USER_NAME,ORG_ID) values ('wp','吴博','CEC3BEEFB74C4510939343CE019049DA'); -------------------------------------------------------- -- DDL for Index ORG_ID_PK -------------------------------------------------------- CREATE UNIQUE INDEX "HR"."ORG_ID_PK" ON "HR"."ORG" ("ORG_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "USERS" ; -------------------------------------------------------- -- DDL for Index USER_ID_PK -------------------------------------------------------- CREATE UNIQUE INDEX "HR"."USER_ID_PK" ON "HR"."USERS" ("USER_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "USERS" ; -------------------------------------------------------- -- Constraints for Table ORG -------------------------------------------------------- ALTER TABLE "HR"."ORG" ADD CONSTRAINT "ORG_ID_PK" PRIMARY KEY ("ORG_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "USERS" ENABLE; ALTER TABLE "HR"."ORG" MODIFY ("ORG_NAME" NOT NULL ENABLE); ALTER TABLE "HR"."ORG" MODIFY ("ORG_ID" NOT NULL ENABLE); -------------------------------------------------------- -- Constraints for Table USERS -------------------------------------------------------- ALTER TABLE "HR"."USERS" ADD CONSTRAINT "USER_ID_PK" PRIMARY KEY ("USER_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "USERS" ENABLE; ALTER TABLE "HR"."USERS" MODIFY ("ORG_ID" NOT NULL ENABLE); ALTER TABLE "HR"."USERS" MODIFY ("USER_NAME" NOT NULL ENABLE); ALTER TABLE "HR"."USERS" MODIFY ("USER_ID" NOT NULL ENABLE); -------------------------------------------------------- -- Ref Constraints for Table ORG -------------------------------------------------------- ALTER TABLE "HR"."ORG" ADD CONSTRAINT "PORG_ID_PK" FOREIGN KEY ("PORG_ID") REFERENCES "HR"."ORG" ("ORG_ID") ENABLE;
测试结果为:
相关推荐
【Oracle】LISTAGG函数的使用.pdf
近在学习的过程中,发现一个挺有意思的函数,它可实现对列值的拼接。下面我们来看看其具体用法。 用法: 对其作用,官方文档的解释如下: For a specified measure, LISTAGG orders data within each ...
由于ACCESS 没有oracle的listagg函数,也没有sql server这种 for xml path 这种, 要实现分组合并需要自定义一个函数,理解了 for xml path 这个就很好理解了。
* 自定义聚合函数 wmsys.... * 由于聚合函数只支持一个参数,这里使用对象类型实现传入多个参数 * Oracle11g Release2版本引入了LISTAGG 函数,使得聚集连接字符串变得很容易。并且允许使用我们指定连接串中的字段顺序
他认为对于SQL的学习是永无止境的,相信每一个查询Oracle数据库的人都需要精通SQL语言,才能写出高效的查询。他参与本书的编写就是为了帮助别人实现这一目标。 目录 封面 -11 封底 -10 扉页 -9 版权 -8 版权声明 -7...
oracle日常收集内容,平时工作积累listagg行转列
含listagg函数 (行列转换) ,Oracle-SQL-Developer-使用简要说明,oracle导入导出语句,Oracle远程登录,rownum分组排序,wm_concat列转行
oracle 10g 11g 12c 19c 21c 23c 重建wm_concat函数脚本 varchar类型clob类型报错不用listagg ORA-01790: 表达式必须具有与对应表达式相同的数据类型 ORA-00904: “WM_CONCAT“: invalid identifier 解决 owmaggrb....
Oracle从12C版本开始,不支持wm_concat函数,我们可以采取的办法有使用listagg函数代替wm_concat函数,或者为了减小修改程序的工作量,可以通过手工创建wm_concat函数来解决这个问题。
最近在写SQL过程中发现需要对一张表结构作调整(此处是SQL Server),其中需要删除多列,由于之前都是一条SQL语句删除一列,于是猜想是否可以一条语句同时删除多列,如果可以,怎么写法? 第一次猜想如下(注意:...
二差排序树树,关于数据结构的二差排序树,仅供参考!!!!!!!!!!!!!!!!!!!
WITH –-小九九算法 t_base AS (SELECT LEVEL AS lv FROM dual CONNECT BY LEVEL ), ...SELECT listagg(t_join.text, ' ') within GROUP(ORDER BY t_join.lv_b) AS m99 FROM t_join GROUP BY t_join.lv_a;
Functions new to Oracle, such as LISTAGG, NTH_VALUE, and more PostgreSQL’s support of recursive WITH and some window functions DB2 syntax and datatypes, some compatible with Oracle MySQL features ...
文档说明了基本的俄罗斯方块的设计过程以及代码!
Access数据库-List列表框控件应用
要添加到内置函数列表中的 VoltDB 存储过程,例如:像 group_concat(又名 listagg)这样的 UDF 像爆炸的 UDTF 通过 JDBC 动态执行 DDL 将多个 SQL 语句绑定到一个事务中创建表插入少量记录(使用 Insert into ...
数据库内部情况监控:活动会话(Active Session)监控是一个重要的指标。通过它,你可以清楚地了解数据库当前是否处于非常繁忙的状态,是否存在 SQL 堆积等 事务,锁等待进行监控。 2.1 第一步,根据业务选择适合的...
PSFT_PP 修改后的PeopleSoft现金会计解决方案PeopleSoft中的收入确认如何在PeopleSoft中创建新的业务单元如何在PSQuery中使用LISTAGG什么是PS Financial GatewayPeopleCode / SQL可能会很方便地在Integration Broker...