关于oracle行合并sql查询问题

lysamper 2008-04-07 05:29:39
表结构数据如下
id name attr
1 aa mm
1 aa nn
2 bb kk
2 bb lll
1 bb oo
我想通过sql来实现如下结构

id name attr
1 aa mm,nn
1 bb oo
2 bb kk,lll


这样能通过sql实现吗??
...全文
408 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
meiZiNick 2008-05-01
  • 打赏
  • 举报
回复
不明LZ在说什么
UltraBejing 2008-04-30
  • 打赏
  • 举报
回复
不明LZ在说什么
pccastle 2008-04-26
  • 打赏
  • 举报
回复
不错
pccastle 2008-04-26
  • 打赏
  • 举报
回复
jf
kanxue660 2008-04-20
  • 打赏
  • 举报
回复
网上很多,看下就明白了
idisee 2008-04-18
  • 打赏
  • 举报
回复
利用一个构造函数.
zhu_gx 2008-04-16
  • 打赏
  • 举报
回复
楼上牛
HelloWorld_001 2008-04-07
  • 打赏
  • 举报
回复
又是这问题,查下以前的帖子就有了
下面是例子

WITH A AS (
SELECT 1123 ID,'2008-9-19' DAY,'9:7:47' TIME FROM DUAL UNION
SELECT 1123 ID,'2008-9-19' DAY,'19:7:47' TIME FROM DUAL UNION
SELECT 1123 ID,'2008-9-19' DAY,'13:7:47' TIME FROM DUAL UNION
SELECT 1123 ID,'2008-9-19' DAY,'12:7:47' TIME FROM DUAL )
select ID,DAY,WMSYS.WM_CONCAT(TIME) TIME FROM A GROUP BY ID,DAY
/

ID DAY TIME ---------- --------- ------------------------------------------------------------
1123 2008-9-19 12:7:47,13:7:47,19:7:47,9:7:47



10G及以上的版本可以這樣寫

第二中方法

SQL code

WITH A AS (
SELECT 1123 ID,'2008-9-19' DAY,'9:7:47' TIME FROM DUAL UNION
SELECT 1123 ID,'2008-9-19' DAY,'19:7:47' TIME FROM DUAL UNION
SELECT 1123 ID,'2008-9-19' DAY,'13:7:47' TIME FROM DUAL UNION
SELECT 1123 ID,'2008-9-19' DAY,'12:7:47' TIME FROM DUAL )
select ID,DAY,MAX(SYS_CONNECT_BY_PATH(TIME,',')) TIME FROM
(SELECT ID,DAY,TIME,ROW_NUMBER()OVER(PARTITION BY ID,DAY ORDER BY ID ) RN FROM A)
START WITH RN=1
CONNECT BY RN-1=PRIOR RN
GROUP BY ID,DAY
发帖
非技术区

1617

社区成员

Oracle 非技术区
社区管理员
  • 非技术区社区
加入社区
帖子事件
创建了帖子
2008-04-07 05:29
社区公告
暂无公告