日期:2014-05-17  浏览次数:20999 次

关于一个简单的sql查询
id        传真编号    传真标题 传真内容 发送时间 发送人 
1 20130917001 aaa1 测试1       2013/9/17          张三
2 20130917002 aaa2 测试2       2013/9/17          李斯
3 20130917003 aaa3 测试3       2013/9/17          王五
4 20130917004 aaa4 测试4       2013/9/17          李斯
5 20130917005 aaa5 测试5       2013/9/17          张三
6 20130917006 aaa6 测试6       2013/9/17          张三
(注:"发送人"列实际为引用用户表的主键user_id,为表达明白直接写用户名)
此表为传真发送记录表,需求:如何通过一条sql统计出每个人发送的传真信息?  
统计结果如下:
用户 传真号
张三 20130917001
20130917005
20130917005

李斯 20130917002
20130917004

王五 20130917003
sql???oracle

------解决方案--------------------
怎么个统计法  这是表示一行 还是三行 就第一行有人名 下面用空代替么?

张三 20130917001 20130917005 20130917005

or 

张三 20130917001
null    20130917005
null    20130917005
------解决方案--------------------
listaag行吗?你这个 WM_CONCAT也可以,分析函数就能搞定。或者按字段都写出来出查询。
------解决方案--------------------
如下三个函数都可以实现:
sys_connect_by_path 9i中就可以使用
wm_concat 10g以上才可以使用
listagg 11gR2才可以使用
------解决方案--------------------
支持楼上的正解
with a as
(
select '20130917001' as czbh,'张三' as fsr from dual union all 
select '20130917002' as czbh,'李斯' as fsr from dual union all 
select '20130917003' as czbh,'王五' as fsr from dual union all 
select '20130917004' as czbh,'李斯' as fsr from dual union all
select '20130917005' as czbh,'张三' as fsr from dual union all  
select '20130917006' as czbh,'张三' as fsr from dual 
)
select wm_concat(czbh),fsr from a group by fsr