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

oracle纵向展示变为横向显示

更新时间: 2014-01-05 02:11:55 责任编辑: Author_N1

 

oracle纵向显示变为横向显示
我有一个表纵向显示大致如下:
商品编码   门店   销量
------------------------
001             a       100
001             b       50
002             c       250
002             a       10
003             b       15
...
我现在想把门店(门店数量不是固定的),销量变为横向显示,如下
商品编码   门店a   门店b   门店c   ...
--------------------------------------
001            100      50
002            10                    250
003                        15
...

由于本人刚接触oracle,仅处于一知半解的状态。仅会门店是固定的写法,
但如果门店不是固定的,就不知如何下手了,也曾搜索过一些类似的帖子,但都不是看得很明白,
特来此开帖,望各位大虾不吝赐教。
--参考方法--
一SQL暂时无解,求大神
--参考方法--
动态构造,这个很容易懂吧
DECLARE
  V_SQL VARCHAR2(2000);
  CURSOR CURSOR_1 IS
    SELECT DISTINCT 门店 FROM TB T ORDER BY 门店;
 
BEGIN
  V_SQL := 'SELECT 商品编码';
  FOR V_XCLCK IN CURSOR_1 LOOP
    V_SQL := V_SQL 
--参考方法--
 ',' 
--参考方法--
 'SUM(DECODE(门店,''' 
--参考方法--
 V_XCLCK.门店 
--参考方法--

             ''',销量,0)) AS ' 
--参考方法--
 V_XCLCK.门店;
  END LOOP;
 
  V_SQL := V_SQL 
--参考方法--
 ' FROM TB GROUP BY 商品编码';
  --DBMS_OUTPUT.PUT_LINE(V_SQL);
  V_SQL := 'CREATE OR REPLACE VIEW TB2  AS ' 
--参考方法--
 V_SQL;
  --DBMS_OUTPUT.PUT_LINE(V_SQL);
  EXECUTE IMMEDIATE V_SQL;
END;
--参考方法--
建议楼主查查case when 语句,这是典型的行列转换。
--参考方法--
干嘛字段名字要中文?怪不得没多少人回答呢,下次注意哦,亲
你试试这个语句:

select 商品编号,
   max(decode(门店,a,销量)) 门店a,
   max(decode(门店,b,销量)) 门店b,
   max(decode(门店,c,销量)) 门店c
from 表
group by 商品编号;
--参考方法--
引用:
动态构造,这个很容易懂吧
DECLARE
  V_SQL VARCHAR2(2000);
  CURSOR CURSOR_1 IS
    SELECT DISTINCT 门店 FROM TB T ORDER BY 门店;
 
BEGIN
  V_SQL := 'SELECT 商品编码';
  FOR V_XCLCK IN CURSOR_1 LOOP
    V_SQL := V_SQL 
--参考方法--
 ',' 
--参考方法--
 'SUM(DECODE(门店,''' 
--参考方法--
 V_XCLCK.门店 
--参考方法--

             ''',销量,0)) AS ' 
--参考方法--
 V_XCLCK.门店;
  END LOOP;
 
  V_SQL := V_SQL 
--参考方法--
 ' FROM TB GROUP BY 商品编码';
  --DBMS_OUTPUT.PUT_LINE(V_SQL);
  V_SQL := 'CREATE OR REPLACE VIEW TB2  AS ' 
--参考方法--
 V_SQL;
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

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