码迷,mamicode.com
首页 > 数据库 > 详细

Oracle数据库row_number() over统计前15名企业, wm_concat(case when then)行转列

时间:2015-01-16 19:13:39      阅读:283      评论:0      收藏:0      [点我收藏+]

标签:


1.

ROW_NUMBER() OVER函数的基本用法

语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)
例如:row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)
如:不同的产品类别和计量单位下,查询所有企业的排名。
SELECT product_type 产品类别,
       prickle 计量单位,
       production_name 企业名称,
       row_number() over(partition by product_type, prickle order by sum(pur.purchase_num) desc)   名次
  from t_purchase_info pur
 group by  production_name, product_type, prickle

参考:http://www.cnblogs.com/fxgachiever/archive/2010/09/15/1826792.html


2.列转行  wm_concat(case when then)
查出来不同的产品类别不同的计量单位下,统计出前15名企业的申报量
技术分享

查出来的效果是:
技术分享





select product_type 产品类别,
       prickle 计量单位,
       wm_concat(case
                   when r = 1 then
                    production_name
                 end) 第一名,
       wm_concat(case
                   when r = 1 then
                    value1
                 end) 申报量,
       wm_concat(case
                   when r = 2 then
                    production_name
                 end) 第二名,
       wm_concat(case
                   when r = 2 then
                    value1
                 end) 申报量,
       wm_concat(case
                   when r = 3 then
                    production_name
                 end) 第三名,
       wm_concat(case
                   when r = 3 then
                    value1
                 end) 申报量,
       wm_concat(case
                   when r = 4 then
                    production_name
                 end) 第四名,
       wm_concat(case
                   when r = 4 then
                    value1
                 end) 申报量,
       wm_concat(case
                   when r = 5 then
                    production_name
                 end) 第五名,
       wm_concat(case
                   when r = 5 then
                    value1
                 end) 申报量,
       wm_concat(case
                   when r = 6 then
                    production_name
                 end) 第六名,
       wm_concat(case
                   when r = 6 then
                    value1
                 end) 申报量,
       wm_concat(case
                   when r = 7 then
                    production_name
                 end) 第七名,
       wm_concat(case
                   when r = 7 then
                    value1
                 end) 申报量,
       wm_concat(case
                   when r = 8 then
                    production_name
                 end) 第八名,
       wm_concat(case
                   when r = 8 then
                    value1
                 end) 申报量,
       wm_concat(case
                   when r = 9 then
                    production_name
                 end) 第九名,
       wm_concat(case
                   when r = 9 then
                    value1
                 end) 申报量,
       wm_concat(case
                   when r = 10 then
                    production_name
                 end) 第十名,
       wm_concat(case
                   when r = 10 then
                    value1
                 end) 申报量,
       wm_concat(case
                   when r = 11 then
                    production_name
                 end) 第十一名,
       wm_concat(case
                   when r = 11 then
                    value1
                 end) 申报量,
       wm_concat(case
                   when r = 12 then
                    production_name
                 end) 第十二名,
       wm_concat(case
                   when r = 12 then
                    value1
                 end) 申报量,
       wm_concat(case
                   when r = 13 then
                    production_name
                 end) 第十三名,
       wm_concat(case
                   when r = 13 then
                    value1
                 end) 申报量,
       wm_concat(case
                   when r = 14 then
                    production_name
                 end) 第十四名,
       wm_concat(case
                   when r = 14 then
                    value1
                 end) 申报量,
       wm_concat(case
                   when r = 15 then
                    production_name
                 end) 第十五名,
       wm_concat(case
                   when r = 15 then
                    value1
                 end) 申报量

  from (SELECT r, production_name, product_type, prickle, value1
          FROM (SELECT row_number() over(partition by product_type, prickle order by sum(pur.purchase_num) desc) r,
                       pur.production_name,
                       pur.product_type,
                       prickle,
                       to_char(round(sum(pur.purchase_num), 2),
                               '9999999999999999999.99') value1
                  FROM t_purchase_info pur, t_sgproject_info pro
                 WHERE 1 = 1
                   AND pro.id = pur.project_id
                   AND (pro.gclb = '房屋建筑工程' OR pro.gclb IS NULL)
                   AND pro.status != 9
                   AND product_regdate >=
                       to_date('2014-01-01', 'yyyy-mm-dd hh24:mi:ss')
                   AND product_regdate <=
                       to_date('2014-12-31 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
                   AND sgproject_type = 1
                 GROUP BY production_name, product_type, prickle)
         WHERE r <= 15
         ORDER BY product_type, prickle, r)
 group by product_type, prickle







Oracle数据库row_number() over统计前15名企业, wm_concat(case when then)行转列

标签:

原文地址:http://blog.csdn.net/lanqibaoer/article/details/42779923

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!