各位大侠
我有这样的想法,不知道用sql语句如何在oracle实现
表的结构已经是定义好的,不能修改了。举例如下
Tbl(....,itemno,name,....)
---------------------------------------
... A11111,Name11 ...
... A11111,Name12 ...
... A11111,Name13 ...
... A22222,Name21 ...
... A22222,Name22 ...itemno和name 都不是主健,而且itemno是用来外连接的,所以,我想得到唯一一行itemno数据,同时也不想丢失name数据。
我想得到的结果就是 把name 信息都存放在一起显示。
"A11111","Name11 Name12 Name13"
"A22222","Name21 Name22"
可是不知道如何能够用sql语句实现。急需帮助!!!!
我有这样的想法,不知道用sql语句如何在oracle实现
表的结构已经是定义好的,不能修改了。举例如下
Tbl(....,itemno,name,....)
---------------------------------------
... A11111,Name11 ...
... A11111,Name12 ...
... A11111,Name13 ...
... A22222,Name21 ...
... A22222,Name22 ...itemno和name 都不是主健,而且itemno是用来外连接的,所以,我想得到唯一一行itemno数据,同时也不想丢失name数据。
我想得到的结果就是 把name 信息都存放在一起显示。
"A11111","Name11 Name12 Name13"
"A22222","Name21 Name22"
可是不知道如何能够用sql语句实现。急需帮助!!!!
解决方案 »
- derby数据库不能更新数据ERROR: java.sql.BatchUpdateException: 以只读方式打开容器。
- 求助:关于oracle的一个小问题
- 请大家帮我看看这个oracle10g建库脚本的问题
- oracle 服务问题
- 通过SQL语句如何获取某个表中某字段内容的最大长度
- 关于笛卡尔乘积问题,高分求高手!
- oracle数据库启动后自己停止,alert.log看不出问题,急求解决
- 修改IP后数据库为什么启动不了?
- Oracle和SQL SERVER开发差别很大,需要有Oracle开发经验的朋友帮忙
- 请教:oracle分析函数lead()over()运算后的结果如何插入到表中新的字段?
- 如何实现两个oracle数据库的数据同步?
- 我的用户testdb里有表“person”,为什么编译报Error: PL/SQL: ORA-00942: 表或视图不存在
select itemno, WMSYS.WM_CONCAT(name) name
from tbl
group by itemno
你可以这样
select itemno, replace(WMSYS.WM_CONCAT(name),',',' ') name
from tbl
group by itemno
from (select a.*,row_number()over(partition itemno name order by name) rn from a )
group by itemno
start with rn=1
connect by rn-1=prior rn and itemno=prior itemno
10G以下可以用这方法,
不过可能语句有点小错误,需要调试下
MY god.
可惜我用的不是10G.
不过这两个方法我都是抄来的
我看得有点乱
select substr(max(sys_connect_by_path(name,' ')),2) id,name
from (select a.*,row_number()over(partition itemno name order by name) rn from a )
group by itemno
start with rn=1
connect by rn-1=prior rn and itemno=prior itemno a: table name
name: tbl 中的name 字段??我依据这样的格式,提示sys_connect_by_path 参数不对。
from (select a.*,row_number()over(partition itemno name order by name) rn from a )
group by itemno
start with rn=1
connect by rn-1=prior rn and itemno=prior itemno
上面有点错误,红字部分改一下
第一层SQL,通过row_number来生成树结构
第二层来遍历树,用sys_connect_by_path生成树路径
再取最长的路径名,把最前的空格滤掉
sys_connect_by_path(name,' ')表示用空格来连接各路径,最前面也会加上的,所以最后输出要滤掉最前面的
之所以用substr,而不用trim滤空格,是为了通用性
因为这里是用空格来连接各路径有,有些会用,或者>
比如用>
sys_connect_by_path(name,'> ')
出来就是
>Name11>Name12>Name13