浏览 8153 次
精华帖 (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中怎么办?谢谢!
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间: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.处理这种一般在程序里处理或者存储过程来处理 |
|
返回顶楼 | |