精华内容
下载资源
问答
  • oracle 行转列函数

    2018-12-28 17:11:37
    第一种方法,wmsys.wm_concat,oracle 10g推出的函数,用‘,’来链接字符串 写法:select pk,wmsys.wm.concat(columnA) from dual group by pk ------------------------------- 第二种写法,LISTAGG,是oracle11...

    一共三个方法(也可以自己手写自定义函数实现):

    第一种方法,wmsys.wm_concat,oracle 10g推出的函数,用‘,’来链接字符串

    写法:select pk,wmsys.wm.concat(columnA) from dual group by pk

    -------------------------------

    第二种写法,LISTAGG,是oracle11g推出的函数,同用‘,’来链接字符串

    写法:select pk,LISTAGG(columnA,',') withinGRO(order by columnA) from dual group by pk;

    -------------------------------------

    但是以上这两种行转列方法都会有字段长度限制,超过4000字节就会报错,sql执行不下去

    网上浏览得知一种方法,可以使用XML函数来解决这个问题

    写法:

    select PK,XMLAGG(XMLELEMENT(E, COLUMNA || ',')).EXTRACT('//text()').getclobval() as COLUMNA from dual GROUP BY PK

    这种方法写出来的数据好像并不能直接浏览,只能通过点击进行弹框浏览,但是可以直接拿来使用

    展开全文
  • oracle行转列函数pivot

    千次阅读 2019-04-16 19:25:43
    什么情形下需要使用行转列 对于同一类的事物下具有多个属性(属性是有限的),比如说学生选课,每一名可以选择多个课程,而且课程的数量也是有限重复的(对于不通学生选同一门科就相当于是课程重复)。比如说下面这样的...

    什么情形下需要使用行转列

    对于同一类的事物下具有多个属性(属性是有限的),比如说学生选课,每一名可以选择多个课程,而且课程的数量也是有限重复的(对于不通学生选同一门科就相当于是课程重复)。比如说下面这样的数据:

    姓名班级性别课程分数
    张三一班高等数学96
    张三一班复变函数78
    张三一班英语78
    李四二班英语98
    李四二班复变函数78
    李四二班微积分73

    可以看到姓名这一列相当于是一个大类,其中包含的属性课程是有限重复的(不需要循环)虽然每个人选择的课程不一定完全相同但是课程总数是有限的。

    使用行转列的函数pivot查询后出现如下的结果:

    SELECT * FROM STUDENT  PIVOT(MIN(S_SCORE) FOR S_COURSE IN ('高等数学', '复变函数', '英语', '微积分')) 
    

    在这里插入图片描述
    下面讲解pivot的语法以及用法:

    pivot基本语法格式

    SELECT * FROM TABLE_NAME PIVOT(PIVOT_CLAUSE, PIVOT_FOR_CLAUSE, PIVOT_IN_CLAUSE); 
    

    语法解释

    • PIVOT_CLAUSE里面是聚合函数
    • PIVOT_FOR_CLAUSE: for子句,后面接的字段是我们想要将其转换为列的字段
    • PIVOT_IN_CLAUSE:in子句,代表的是对指定的列进行过滤,只会将指定的行转换成列(这里需要注意的是将指定的行转换成列的意思不是说将原来for后面的字段为in里面的内容的行距转换成列,
      实际上即使for后面的字段得值不在in子句里面,也是会被转换,只是转换的结果中不会存在这一列而已)

    测试数据

    在这里插入图片描述
    上面的测试数据中可以看到code也是重复的,可以将code转换成行显示,

    SELECT * FROM TEST_TABLE PIVOT((MIN(PLAN_DATE) FOR CODE IN('0001' AS CODE_ONE, '0002' AS CODE_TWO)); 
    

    可以得到如下结果:
    在这里插入图片描述
    将上面测试数据中的第二条数据的分类改为分类3,得到如下的测试数据:
    在这里插入图片描述
    然后使用同样的转换语句:

    SELECT * FROM TEST_TABLE PIVOT((MIN(PLAN_DATE) FOR CODE IN('0001' AS CODE_ONE, '0002' AS CODE_TWO)); 
    

    发现此时的结果有三条。
    在这里插入图片描述
    所以转换的结果行数也是有规律的,比如我们上面查询的时候使用的是*,也就是查询所有的列,这样的化去除PIVOT_CLAUSEPIVOT_FOR_CLAUSE两个字段,然后再将其余所有字段分组查询,上面的例子中就是:

    select id, name, price, category from test_table group by id, name, price, category;
    

    这样得到的结果行数就是使用pivot后的行数。

    查询的结果不仅仅是in子句里面的行数

    上面使用pivot查询的时候in子句里面是包含了for子句后面对应字段的所有值,比如code的值有0001以及0002,在in里面也就使用了0001和0002,当我们只是使用其中一个比如0002时:

    SELECT * FROM test_table PIVOT(MIN(plan_date) FOR CODE IN ('0002' AS CODE_ONE));
    

    得到的结果如下:
    在这里插入图片描述

    查询结果中是有三条结果的,但是原来的数据中code的值为0002的只有两条,所以这里不要被误导了,这里in里面只有code为0002的不是说原来的数据里面只有code=0002的才需要转换,实际上转换的还是所有的行,只是转换出来的列是少了一个的

    in子句不能使用子查询

    上面的in子句里面的内容是固定的,如果在in里面想要使用子查询比如下面的sql:

    SELECT * FROM test_table PIVOT(MIN(plan_date) FOR CODE IN (select distinct code from test_table));
    

    使用这种方式是会报错的。在网上搜索的时候看到可以使用存储过程来实现in子句里面使用动态查询,下次再写咯。

    展开全文
  • Oracle 关于oracle自带的行转列函数

    千次阅读 2016-03-11 14:55:40
    目标是将某表中根据id分组后将name字段的值拼接到一中,且用“,“进行分割   试过用 wm_concat() 结合 group by , 在pl/sql中执行正常, 但是在java程序运行时会报: ORA-22922:不存在的 LOB 值   1....

    前言:

    环境是java+hibernate+oracle11g

    目标是将某表中根据id分组后将name字段的值拼接到一列中,且用“,“进行分割

     

    试过用 wm_concat() 结合 group by , 在pl/sql中执行正常,

    但是在java程序运行时会报: ORA-22922:不存在的 LOB 值

     

    1.没用hql查询,用的纯sql

    2.也将字段转换为varchar类型了: cast(wm_concat(name) as varchar2(2000))

     

    很头疼,网上说可能是hibernate的原因,

    后来找了可以替代wm_concat()的方法 listagg(name, ',')

    语法如下:

    listagg(name, ',')  within  group(order by id)

     

    应该很好理解:listagg方法的第一个参数是需要进行拼接的字段,第二个参数是字段分隔符,

    within 和 order by 是必须的, order by决定了拼接后的各name值的展示顺序

    注意,不要忘了group by 

    例如 表 tmp

    id  name

    1   a

    2   b

    3   c

    2   d

    2   c

    3   x

    sql语句这样写:

     

    select id,listagg(name, ',')  within  group(order by name) from tmp
    
    group by id
     

     

    结果为:

    1   a

    2   b,c,d

    3   c,x

     

    如果将order by name 改为 order by name desc

    结果应该为:

    1   a

    2   d,c,b

    3   x,c

    当然,也可以order  by 其他字段。根据需要来。

    以上例子已经过人工测试,保证可用。

    ok,收工回家。

     

     

     

    展开全文
  • 行转列用了 PIVOT (sum(water_daily) for short_name in ('车逻洞' 车逻洞, '车逻闸' 车逻闸,'车逻' 车逻,  '南关' 南关,'头闸' 头闸,'周山洞' 周山洞,'界首小闸' 界首小闸,'子英闸' 子英闸,'周山' 周山)) 每个...

    数据库版本:oralce  11g 

    表名WM_TD_WATER_DAILY 结构如下,我把没用到的字段隐藏了,全放出来不太好哈.

    MONITOR_ID为BI_TB_MONITOR_BI的ID ,用于关联站点名称(SHORT_NAME).

    业务需求 :现有日水量表,每条数据记录着一天的用水量,bi_tb_monitor_bi中有一下九个站点

     全部SQL如下,下面有SQL分解,看起来能清晰很多

    SELECT MON, CASE
             WHEN MON IS NULL AND DATETIME IS NULL THEN
              '累计水量'
             WHEN MON IS NOT NULL AND DATETIME IS NULL THEN
              '小计'
             ELSE
              CASE
                WHEN INSTR(DATETIME, '1旬') > 0 THEN
                 REPLACE(DATETIME, '1旬', '上旬')
                WHEN INSTR(DATETIME, '2旬') > 0 THEN
                 REPLACE(DATETIME, '2旬', '中旬')
                WHEN INSTR(DATETIME, '3旬') > 0 THEN
                 REPLACE(DATETIME, '3旬', '下旬')
              END
           END DATETIME,
           SUM(NVL(车逻洞, 0)) 车逻洞,
           SUM(NVL(车逻闸, 0)) 车逻闸,
           SUM(NVL(车逻, 0)) 车逻,
           SUM(NVL(南关, 0)) 南关,
           SUM(NVL(头闸, 0)) 头闸,
           SUM(NVL(周山洞, 0)) 周山洞,
           SUM(NVL(界首小闸, 0)) 界首小闸,
           SUM(NVL(子英闸, 0)) 子英闸,
           SUM(NVL(周山, 0)) 周山,
           SUM(NVL(车逻洞, 0)) + SUM(NVL(车逻闸, 0)) + SUM(NVL(南关, 0)) +
           SUM(NVL(头闸, 0)) + SUM(NVL(周山洞, 0)) + SUM(NVL(界首小闸, 0)) +
           SUM(NVL(子英闸, 0)) + SUM(NVL(周山, 0)) 合计
      FROM 
      (
      SELECT TO_CHAR(MONITOR_DATE, 'yyyy') YEAR,
                   TO_CHAR(MONITOR_DATE, 'yyyy') || TO_CHAR(MONITOR_DATE, 'mm') MON,
                   TO_CHAR(MONITOR_DATE, 'mm') || '月' ||
                   DECODE(TRUNC((TO_CHAR(MONITOR_DATE, 'dd') - 1) / 10), 0, '1旬' ,1, '2旬', '3旬') DATETIME,
                   SUM(车逻洞) / 10000 车逻洞,
                   SUM(车逻闸) / 10000 车逻闸,
                   SUM(车逻) / 10000 车逻,
                   SUM(南关) / 10000 南关,
                   SUM(头闸) / 10000 头闸,
                   SUM(周山洞) / 10000 周山洞,
                   SUM(界首小闸) / 10000 界首小闸,
                   SUM(子英闸) / 10000 子英闸,
                   SUM(周山) / 10000 周山
              FROM 
              (
              SELECT B.SHORT_NAME, T.MONITOR_DATE, T.WATER_DAILY
                      FROM WM_TD_WATER_DAILY T
                      LEFT JOIN BI_TB_MONITOR_BI B
                        ON T.MONITOR_ID = B.ID
                     WHERE T.REGION_ID = '6-100-018'
                       AND T.MONITOR_DATE BETWEEN TO_DATE('2018-10', 'yyyy-MM') AND
                           TO_DATE('2018-12', 'yyyy-MM')
              )
            PIVOT(SUM(WATER_DAILY)
               FOR SHORT_NAME IN('车逻洞' 车逻洞,
                                '车逻闸' 车逻闸,
                                '车逻' 车逻,
                                '南关' 南关,
                                '头闸' 头闸,
                                '周山洞' 周山洞,
                                '界首小闸' 界首小闸,
                                '子英闸' 子英闸,
                                '周山' 周山))
             GROUP BY TO_CHAR(MONITOR_DATE, 'yyyy'),
                      TO_CHAR(MONITOR_DATE, 'mm'),
                      DECODE(TRUNC((TO_CHAR(MONITOR_DATE, 'dd') - 1) / 10),
                             0,
                             '1旬' ,1,
                             '2旬',
                             '3旬')
             ORDER BY MON
      )
     GROUP BY ROLLUP(MON, DATETIME)
    

    SQL分解 

    第一层SQL:

    只做最基本的查询,并把条件都写好

     SELECT B.SHORT_NAME, T.MONITOR_DATE, T.WATER_DAILY
                      FROM WM_TD_WATER_DAILY T
                      LEFT JOIN BI_TB_MONITOR_BI B
                        ON T.MONITOR_ID = B.ID
                     WHERE T.REGION_ID = '6-100-018'
                       AND T.MONITOR_DATE BETWEEN TO_DATE('2018-10', 'yyyy-MM') AND
                           TO_DATE('2018-12', 'yyyy-MM')  
    

    查询结果如下(只插入了两个站点的数据<车逻洞>,<车逻闸>): 

     

    第二层SQL:

    用decode(trunc((to_char(monitor_date,'dd')-1)/10),0,'1旬',1,'2旬','3旬') 把旬分组,

    行转列用了 PIVOT (sum(water_daily) for short_name in ('车逻洞' 车逻洞, '车逻闸' 车逻闸,'车逻' 车逻,
     '南关' 南关,'头闸' 头闸,'周山洞' 周山洞,'界首小闸' 界首小闸,'子英闸' 子英闸,'周山' 周山))

    每个sum后除以10000是业务需求

    SELECT TO_CHAR(MONITOR_DATE, 'yyyy') YEAR,
                   TO_CHAR(MONITOR_DATE, 'yyyy') || TO_CHAR(MONITOR_DATE, 'mm') MON,
                   TO_CHAR(MONITOR_DATE, 'mm') || '月' ||
                   DECODE(TRUNC((TO_CHAR(MONITOR_DATE,'dd') - 1) / 10), 0, '1旬' ,1, '2旬', '3旬')DATETIME,
                   SUM(车逻洞) / 10000 车逻洞,
                   SUM(车逻闸) / 10000 车逻闸,
                   SUM(车逻) / 10000 车逻,
                   SUM(南关) / 10000 南关,
                   SUM(头闸) / 10000 头闸,
                   SUM(周山洞) / 10000 周山洞,
                   SUM(界首小闸) / 10000 界首小闸,
                   SUM(子英闸) / 10000 子英闸,
                   SUM(周山) / 10000 周山
              FROM 
              (
              SELECT B.SHORT_NAME, T.MONITOR_DATE, T.WATER_DAILY
                      FROM WM_TD_WATER_DAILY T
                      LEFT JOIN BI_TB_MONITOR_BI B
                        ON T.MONITOR_ID = B.ID
                     WHERE T.REGION_ID = '6-100-018'
                       AND T.MONITOR_DATE BETWEEN TO_DATE('2018-10', 'yyyy-MM') AND
                           TO_DATE('2018-12', 'yyyy-MM')
              )
            PIVOT(SUM(WATER_DAILY)
               FOR SHORT_NAME IN('车逻洞' 车逻洞,
                                '车逻闸' 车逻闸,
                                '车逻' 车逻,
                                '南关' 南关,
                                '头闸' 头闸,
                                '周山洞' 周山洞,
                                '界首小闸' 界首小闸,
                                '子英闸' 子英闸,
                                '周山' 周山))
             GROUP BY TO_CHAR(MONITOR_DATE, 'yyyy'),
                      TO_CHAR(MONITOR_DATE, 'mm'),
                      DECODE(TRUNC((TO_CHAR(MONITOR_DATE, 'dd') - 1) / 10),
                             0,
                             '1旬' ,1,
                             '2旬',
                             '3旬')
             ORDER BY MON

    查询结果如下:

    最后一层SQL:

    用了 GROUP BY ROLLUP (MON,DATETIME)  按MON,DATETIME分组合计

    SELECT CASE
             WHEN MON IS NULL AND DATETIME IS NULL THEN
              '累计水量'
             WHEN MON IS NOT NULL AND DATETIME IS NULL THEN
              '小计'
             ELSE
              CASE
                WHEN INSTR(DATETIME, '1旬') > 0 THEN
                 REPLACE(DATETIME, '1旬', '上旬')
                WHEN INSTR(DATETIME, '2旬') > 0 THEN
                 REPLACE(DATETIME, '2旬', '中旬')
                WHEN INSTR(DATETIME, '3旬') > 0 THEN
                 REPLACE(DATETIME, '3旬', '下旬')
              END
           END DATETIME,
           SUM(NVL(车逻洞, 0)) 车逻洞,
           SUM(NVL(车逻闸, 0)) 车逻闸,
           SUM(NVL(车逻, 0)) 车逻,
           SUM(NVL(南关, 0)) 南关,
           SUM(NVL(头闸, 0)) 头闸,
           SUM(NVL(周山洞, 0)) 周山洞,
           SUM(NVL(界首小闸, 0)) 界首小闸,
           SUM(NVL(子英闸, 0)) 子英闸,
           SUM(NVL(周山, 0)) 周山,
           SUM(NVL(车逻洞, 0)) + SUM(NVL(车逻闸, 0)) + SUM(NVL(南关, 0)) +
           SUM(NVL(头闸, 0)) + SUM(NVL(周山洞, 0)) + SUM(NVL(界首小闸, 0)) +
           SUM(NVL(子英闸, 0)) + SUM(NVL(周山, 0)) 合计
      FROM 
      (
      SELECT TO_CHAR(MONITOR_DATE, 'yyyy') YEAR,
                   TO_CHAR(MONITOR_DATE, 'yyyy') || TO_CHAR(MONITOR_DATE, 'mm') MON,
                   TO_CHAR(MONITOR_DATE, 'mm') || '月' ||
                   DECODE(TRUNC((TO_CHAR(MONITOR_DATE,'dd') - 1) / 10), 0, '1旬' ,1, '2旬', '3旬')DATETIME,
                   SUM(车逻洞) / 10000 车逻洞,
                   SUM(车逻闸) / 10000 车逻闸,
                   SUM(车逻) / 10000 车逻,
                   SUM(南关) / 10000 南关,
                   SUM(头闸) / 10000 头闸,
                   SUM(周山洞) / 10000 周山洞,
                   SUM(界首小闸) / 10000 界首小闸,
                   SUM(子英闸) / 10000 子英闸,
                   SUM(周山) / 10000 周山
              FROM 
              (
              SELECT B.SHORT_NAME, T.MONITOR_DATE, T.WATER_DAILY
                      FROM WM_TD_WATER_DAILY T
                      LEFT JOIN BI_TB_MONITOR_BI B
                        ON T.MONITOR_ID = B.ID
                     WHERE T.REGION_ID = '6-100-018'
                       AND T.MONITOR_DATE BETWEEN TO_DATE('2018-10', 'yyyy-MM') AND
                           TO_DATE('2018-12', 'yyyy-MM')
              )
            PIVOT(SUM(WATER_DAILY)
               FOR SHORT_NAME IN('车逻洞' 车逻洞,
                                '车逻闸' 车逻闸,
                                '车逻' 车逻,
                                '南关' 南关,
                                '头闸' 头闸,
                                '周山洞' 周山洞,
                                '界首小闸' 界首小闸,
                                '子英闸' 子英闸,
                                '周山' 周山))
             GROUP BY TO_CHAR(MONITOR_DATE, 'yyyy'),
                      TO_CHAR(MONITOR_DATE, 'mm'),
                      DECODE(TRUNC((TO_CHAR(MONITOR_DATE, 'dd') - 1) / 10),
                             0,
                             '1旬' ,1,
                             '2旬',
                             '3旬')
             ORDER BY MON
      )
     GROUP BY ROLLUP(MON, DATETIME)

    查询结果如下:

    select后的不加case when的效果如下

    mon用于第二层的排序 省略掉了

    总结

    这段SQL中用到了以下函数:

    TO_DATE(),TO_CHAR(),BETWEEN,TRUNC(),DECODE(),NVL(),SUM(),PIVOT(  FOR  ),CASE  WHEN  THEN  ELSE  END,ROLLUP()

    欢迎指正并优化SQL!

    展开全文
  • Oracle行转列转行大全

    千次阅读 2019-08-24 21:15:50
    函数wm_concat(列名)介绍:该函数可以把值以","号分隔起来,并显示成一 准备测试数据: create table test(id number,name varchar2(20)); insert into test values(1,'a'); insert into test values(1,'b');...
  • [Oracle]多行转列函数

    2009-11-18 09:08:00
    Oracle中使用WMSYS.WM_CONCAT函数进行多行转列原数据: rank name AA NAME1 AA NAME2 AA NAME3 BB NAME4 BB NAME5SQL>select t.rank,wmsys.wm_concat(t.name
  • --行转列 select * from SalesList pivot( max(salesNum) for shangPin in ( --shangPin 即要转成的字段 '上衣' as 上衣, --max(salesNum) 此处必须为聚合函数, '裤子' as 裤子, --in () 对要转成的每一个...
  • Oracle 分组 + 行转列操作

    千次阅读 2012-05-31 16:03:27
    上面sql作为下面sql的子查询,进行数据的分组汇总,行转列 select t.tradeMonth, t.brokerBranch, t.userType, sum(case t.userType when '0' then t.tc else 0 end) 客户经理提成调整, sum(case t....
  • HH 终风且暴,顾我则笑,谑浪笑敖,中心是悼。 终风且霾,惠然肯来,莫往莫来,悠悠我思。 博客园 首页 ...Oracle行转列转行的Sql语句总结 多行转字符串 这个比较简单,用||或concat函数...
  • Oracle分组函数

    千次阅读 2016-11-24 15:11:15
    Oracle分组函数
  • Oracle多行转列函数

    2011-04-18 16:17:54
    Oracle中使用WMSYS.WM_CONCAT函数进行多行转列 原数据: rank name AA NAME1 AA NAME2 AA NAME3 BB NAME4 BB NAME5 SQL> select t...
  • Oracle-11g 新函数 LISTAGG 行转列

    万次阅读 2014-05-15 11:31:42
    现在oracle数据库都在用11g的了,
  • Oracle 多行转列函数

    千次阅读 2010-04-27 13:07:00
    Oracle中使用WMSYS.WM_CONCAT函数进行多行转列原数据:rank name AA NAME1AA NAME2AA NAME3 BB NAME4BB NAME5SQL>select trim(t.rank) as rank, wmsys.wm_concat
  • oracle行转列

    千次阅读 2018-08-17 15:03:56
    行转列 主要原理是利用decode函数、聚集函数(sum),结合group by分组实现的 decode函数 其具体的语法格式如下: DECODE(input_value,value,result[,value,result…][,default_result]); 其中: input_value ...
  • Oracle 行转列转行

    万次阅读 2016-05-16 18:37:58
    场景 在生成报表的时候,很多时候对某取值固定或者有限的几个值时,进行转列分析。...利用DECODE函数、聚合函数SUM、GROUP BY分组实现。 WITH CO_ORDER AS( SELECT 'DOM1' Customer, 'ZHA01' fa
  • Oracle应用之转行函数vm_concat使用

    千次阅读 2018-12-12 23:56:37
    这就想到oracle转行函数vm_concat。 可以用类似这种格式wm_concat(a || ‘(’ || b || ‘)’),a表示用户名字段,b表示账号字段。 例子: &amp;amp;amp;amp;lt;select id=&amp;amp;amp;quot;...
  • oracle数据库 行转列 转行详解

    千次阅读 2015-03-10 15:06:06
    [一]、行转列   1.1、初始测试数据   表结构:TEST_TB_GRADE   create table TEST_TB_GRADE (  ID NUMBER(10) not null,  USER_NAME VARCHAR2(20 CHAR),  COURSE...
  • Oracle 分组函数

    2019-04-26 21:46:56
    分组函数分组函数作用于一组数据,并对一组数据返回一个值; 组函数类型: AVG 求平均值: 只可以对数值型数据起作用; COUNT 计算: 可以对任意数据类型的数据起作用; MAX最大值: 可以对任意数据类型...
  • Oracle行转列之pivot

    2013-03-15 20:45:13
    oracle数据库最详细的行转列资料,是官方文档的详细介绍版,中文的
  • oracle行转列转行

    千次阅读 2013-05-11 22:56:49
    这就是最常见的行转列,主要原理是利用decode函数、聚集函数(sum),结合group by分组实现的   create table test( id varchar2(255) primary key not null, name varchar2(255), course varch
  • Oracle 行转列转行 的Sql语句总结
  • 多行字符串 这个比较简单,用||或concat函数可以实现 ? 1 ... select concat(id,username) str from ... 字符串 实际上就是拆分字符串的问题,可以使用 substr、instr、regexp_substr函数方式 ...
  • PIVOT-转行 Oracle 数据库 11g 推出 select * from 表名 pivot ( ...UNPIVOT-行转列 Oracle 数据库 11g 推出 select * from 表名 unpivot ( 新列名 FOR 老列名+s IN (老列名1, 老列名2, 老列名3) ) u
  • oracle分组函数

    2019-03-14 21:22:38
    5个常用分组函数 ...* 组函数中 DISTINCT 消除重复 * 组函数中空值处理 * 通过 GROUP BY 子句进行分组汇总 * having 子句 * select 语句的执行顺序 * 组函数的嵌套 1. MIN函数和MAX函数 5...
  • Oracle行转列转行的Sql语句总结

    万次阅读 2015-06-12 17:11:09
    行转列 转行 [一]、行转列   1.1、初始测试数据   表结构:TEST_TB_GRADE   Sql代码  create table TEST_TB_GRADE  (   ID NUMBER(10) not null,   USER_NAME VARCHAR2(20 CHAR),   ...
  • oracle分组函数详解()

    千次阅读 2008-08-06 14:41:00
    oracle分组函数详解()2008-01-17 09:28第六章 综合数据和分组函数分组函数是对一批(一组)数据进行操作(综合)之后返回一个值。这批数据可能是整个表,也可能是按某种条件把该表分成的组。不少专家认为对于管理...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,025
精华内容 14,810
关键字:

oracle分组行转列函数