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

初学者求一段sql统计语句

更新时间: 2014-01-05 02:12:18 责任编辑: Author_N1

 

菜鸟求一段SQL统计语句
表 table1 有以下数据:
STL_ID STL_NAME STL_INVOICE STL_COUNT
1 NAME1           INVOICE1 10
1 NAME1           INVOICE2 20
1 NAME1           INVOICE3 30
2 NAME2           INVOICE4 10
2 NAME2           INVOICE5 30

希望最后的统计结果如下:

STL_ID STL_NAME STL_INVOICE               STL_COUNT
1 NAME1         INVOICE1,INVOICE2,INVOICE3 60
2 NAME2         INVOICE4,INVOICE5         40

请问SQL语句要怎么写?


--参考方法--
楼主用函数wmsys.wm_concat看看
--参考方法--
select t2.id,
       t2.name,
       ltrim(max(SYS_CONNECT_BY_PATH(t2.invoice, ',')), ',') col,
       max(t2.amt) amt
  from (select t.*,
               ROW_NUMBER() OVER(PARTITION BY t.id, t.name ORDER BY t.invoice) AS RN,
               sum(t.stl_count) over(partition by t.id, t.name order by t.invoice) as amt
          from test t) t2
 start with rn = 1
connect by prior rn = rn - 1
       and prior t2.id = t2.id
 group by t2.id, t2.name
 order by t2.id;


--参考方法--

SELECT STL_ID,STL_NAME,
       WM_CONCAT(STL_INVOICE) STL_INVOICE,
       SUM(STL_COUNT) STL_COUNT
FROM TABLE1
GROUP BY STL_ID,STL_NAME
ORDER BY STL_ID,STL_NAME


--参考方法--
还可以用listagg
--参考方法--
10g的话用分组函数wm_concat()
select 
stl_id,stl_name,wm_concat(stl_invoice) stl_invoice ,sum(stl_count) stl_count 
group by stl_id,stl_name
order by stl_id,stl_name;
--参考方法--
3楼的最简洁
10G上的版本wm_concat
11g listagg

--参考方法--
wm_concat在12c已经废弃,建议用listagg
--参考方法--
引用:
3楼的最简洁
10G上的版本wm_concat
11g listagg

+1
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

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