欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

2表相连生成新数据,用group by未成功,有难度

更新时间: 2014-01-05 02:10:47 责任编辑: Author_N1

 

二表相连生成新数据,用group by未成功,有难度。


二表通过type相连,
在mysql下,很易实现,但oracle中,不会。
谢谢大家,祝好人二生平安。
--参考方法--
不就是连接两个表吗?
说清楚你的需求。
--参考方法--
select a.type id,a.name type,wmsys.wm_concat(b.desc)descs from table1 a left join table2 b on a.type=b.type group by id
--参考方法--
上面已经已经有答案了..

WITH A AS(
  SELECT 1 AS TYPE,'NAME1' AS NAME,1 AS ID,'WC1' AS DES FROM DUAL UNION ALL
  SELECT 2,'NAME2',2,'WC2' FROM DUAL UNION ALL
  SELECT 3,'NAME3',3,'WC3' FROM DUAL UNION ALL
  SELECT 4,'NAME4',4,'WC4' FROM DUAL
),B AS(
  SELECT 1 AS ID,1 AS TYPE,'WC1' AS DES FROM DUAL UNION ALL
  SELECT 2,2,'WC2' FROM DUAL UNION ALL
  SELECT 3,2,'WC3' FROM DUAL UNION ALL
  SELECT 4,4,'WC4' FROM DUAL
)
SELECT A.ID, A.NAME, WMSYS.WM_CONCAT(B.DES)
  FROM A, B
 WHERE A.TYPE = B.TYPE(+)
 GROUP BY A.ID, A.NAME;

结果
ID NAME WMSYS.WM_CONCAT(B.DES)
1 NAME1 WC1
2 NAME2 WC2,WC3
3 NAME3
4 NAME4 WC4
--参考方法--
引用:
引用:select a.type id,a.name type,wmsys.wm_concat(b.desc)descs from table1 a left join table2 b on a.type=b.type group by id

多谢谢,此函数,我学习了。
祝天天 快乐!!


....那就给你另外一种解决方案...

WITH A AS(
  SELECT 1 AS TYPE,'NAME1' AS NAME,1 AS ID,'WC1' AS DES FROM DUAL UNION ALL
  SELECT 2,'NAME2',2,'WC2' FROM DUAL UNION ALL
  SELECT 3,'NAME3',3,'WC3' FROM DUAL UNION ALL
  SELECT 4,'NAME4',4,'WC4' FROM DUAL
),B AS(
  SELECT 1 AS ID,1 AS TYPE,'WC1' AS DES FROM DUAL UNION ALL
  SELECT 2,2,'WC2' FROM DUAL UNION ALL
  SELECT 3,2,'WC3' FROM DUAL UNION ALL
  SELECT 4,4,'WC4' FROM DUAL
)
SELECT ID,NAME,LTRIM(MAX(SYS_CONNECT_BY_PATH(DES, ',')), ',') AS DES FROM
(
SELECT ROW_NUMBER() OVER(PARTITION BY A.ID ORDER BY NAME) R,A.ID,A.NAME,B.DES
  FROM A, B
 WHERE A.TYPE = B.TYPE(+)
 )
 START WITH R = 1
 CONNECT BY PRIOR R=R-1
 AND PRIOR ID =ID
 GROUP BY ID,NAME
 ORDER BY 1

--参考方法--
11gR2 新增了一个很有意思的函数 listagg ,可以按组连接字符串。

select b.name, listagg(a.desc, ', ') within group (order by a.desc)
from table2 a, table1 b
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:10:47
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/6606/
本文WWW.DOC100.NET DOC100.NET版权所有。