浏览 766 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2008-02-29 关键字: 多行转换成一行
同一列的多行字符串数据用SQL怎么转换成同一列的一行数据?
比如:我用select department,userName from users从表中查询出如下数据 department | userName --------------- -------------- it it1 it it2 it it3 ur ur1 ur ur2
我能不能用什么SQL对department进行分组然后变成如下的结果呢? department | userName --------------- -------------- it it1_it2_it3 ur ur1_ur2
似乎行列转换中只能对那些采用聚合函数的才能转换,这个东东就不知道在SQL中怎么办?谢谢!
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2008-03-03
原本想找一个比较简单的一条SQL能搞定的,没有找到.
我还是用了比较笨的办法,采用游标去遍历他们,然后连接起来,这样就比较繁琐麻烦. |
|
| 返回顶楼 | |
|
时间:2008-03-10
Oracle 8i及以上:
drop table users
/
create table users
(department varchar2(20),
userName varchar2(20)
)
/
insert into users
values('it','it1');
insert into users
values('it','it2');
insert into users
values('it','it3');
insert into users
values('ur','ur1');
insert into users
values('ur','ur2');
commit
/
select max(count(*))
from users
group by department;
--
select department,
decode(substr(usernames, -1),
'_',
substr(usernames, 1, length(usernames) - 1),
usernames)
from (select department,
max(decode(rn, 1, userName, null)) || '_' ||
max(decode(rn, 2, userName, null)) || '_' ||
max(decode(rn, 3, userName, null)) usernames
from (select department,
userName,
row_number() over(partition by department order by userName) rn
from users)
group by department);
--
nested subquery,regardless of performance. |
|
| 返回顶楼 | |
|
时间:2008-03-25
1。sql来改完全是哎,不好说得,效率极低。要是表大了,基本没有反应了。
2.处理这种一般在程序里处理或者存储过程来处理 |
|
| 返回顶楼 | |




