精华内容
下载资源
问答
  • oracle中pivot和unpivot函数用法举例

    万次阅读 2017-07-24 10:08:42
    一、pivot 行转列 使用表dm_custbd_lab_c_month 表结构如下: ... from (select t.c_month, t.c_... where t.c_month = '201706') unpivot((kpi_value) for index_id in(SYMB00034,  SYMB00015))

    一、pivot 行转列

    使用表dm_custbd_lab_c_month

    表结构如下:



    行转列语句:

    select *
      from (select t.c_month, t.c_channel, t.c_soto, t.label_code, t.label_value
              from dm_custbd_lab_c_month t
             where t.c_month = '201706'
               and t.label_code in ('LAB_004', 'LAB_001', 'LAB_002')) pivot(max(label_value) for label_code in('LAB_004' as
                                                                                                               LAB_004,
                                                                                                               'LAB_001' as
                                                                                                               LAB_001,
                                                                                                               'LAB_002' as
                                                                                                               LAB_002));

    结果展示:


    二、列转行 UNPIVOT

    表结构展示:


    列转行脚本:

    select *
      from (select t.c_month, t.c_channel, t.c_soto, t.symb00034, t.symb00015
              from dm_custbd_k_c_month_hor t
             where t.c_month = '201706') unpivot((kpi_value) for index_id in(SYMB00034,
                                                                             SYMB00015))


    展开全文
  • Oracle列转行unpivot函数的使用

    千次阅读 2020-11-29 18:51:32
    这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的...Oracle中列转行unpivot函数的使用 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑

    行转列函数:unpivot
    说明:将表中多个列缩减为一个聚合列
    语法:unpivot(新列名 for 聚合列名 in (对应的列名1…列名n ))

    创建表
    create table score(
    姓名 varchar2(20),
    语文 number,
    数学 number,
    英语 number
    );

    插入数据
    insert into score values (‘张三’,99,88,78);
    insert into score values (‘李四’,93,82,75);
    insert into score values (‘王五’,95,83,76);
    原表数据
    使用unpivot函数行转列

    select 姓名,科目,成绩
    from score unpivot ( 成绩 for 科目 in ( 语文, 数学, 英语 ) );

    行转列结果

    展开全文
  • Pivot 和 Unpivot 使用简单的 SQL 以电子表格类型的交叉表报表显示任何关系表中的信息,并将交叉表中的所有数据存储到关系表中。 如您所知,关系表是表格化的,即,它们以列-值对的形式出现。假设一个表名为 ...

    Pivot 和 Unpivot

    使用简单的 SQL 以电子表格类型的交叉表报表显示任何关系表中的信息,并将交叉表中的所有数据存储到关系表中。

    如您所知,关系表是表格化的,即,它们以列-值对的形式出现。假设一个表名为 CUSTOMERS。

    Pivot

    SQL> desc customers
     Name                                      Null?    Type
     ----------------------------------------- -------- ---------------------------
     CUST_ID                                            NUMBER(10)
     CUST_NAME                                          VARCHAR2(20)
     STATE_CODE                                         VARCHAR2(2)
     TIMES_PURCHASED                                    NUMBER(3)
    

    选定该表:

    select cust_id, state_code, times_purchased
    from customers
    order by cust_id;

    输出结果如下:

    CUST_ID STATE_CODE TIMES_PURCHASED
    ------- ---------- ---------------
          1 CT                       1
          2 NY                      10
          3 NJ                       2
          4 NY                       4
    ...  
                                  
    and so on ...
                                

    注意数据是如何以行值的形式显示的:针对每个客户,该记录显示了客户所在的州以及该客户在商店购物的次数。当该客户从商店购买更多物品时,列 times_purchased 会进行更新。 
     

    现在,假设您希望统计一个报表,以了解各个州的购买频率,即,各个州有多少客户只购物一次、两次、三次等等。如果使用常规 SQL,您可以执行以下语句:

    select state_code, times_purchased, count(1) cnt
    from customers
    group by state_code, times_purchased;
    
    输出如下:
    ST TIMES_PURCHASED        CNT
    -- --------------- ----------
    CT               0         90
    CT               1        165
    CT               2        179
    CT               3        173
    CT               4        173
    CT               5        152
    ...  
                                  
    and so on ...
                                

    这就是您所要的信息,但是看起来不太方便。使用交叉表报表可能可以更好地显示这些数据,这样,您可以垂直排列数据,水平排列各个州,就像电子表格一样:

    Times_purchased
                 CT           NY         NJ      ...  
                                  
    and so on ...
    
    1             0            1          0      ...
    2            23          119         37      ...
    3            17           45          1      ...
    ...  
                                  
    and so on ... 
                                

    在 Oracle 数据库 11g 推出之前,您需要针对每个值通过 decode 函数进行以上操作,并将每个不同的值编写为一个单独的列。但是,该方法一点也不直观。 
     

    庆幸的是,您现在可以使用一种很棒的新特性 PIVOT 通过一种新的操作符以交叉表格式显示任何查询,该操作符相应地称为 pivot。下面是查询的编写方式:

    select * from (
       select times_purchased, state_code
       from customers t
    )
    pivot 
    (
       count(state_code)
       for state_code in ('NY','CT','NJ','FL','MO')
    )
    order by times_purchased
    

    输出如下:

    . TIMES_PURCHASED       'NY'       'CT'       'NJ'       'FL'       'MO'
    --------------- ---------- ---------- ---------- ---------- ----------
                  0      16601         90          0          0          0
                  1      33048        165          0          0          0
                  2      33151        179          0          0          0
                  3      32978        173          0          0          0
                  4      33109        173          0          1          0
    ... and so on ...
    

    这表明了 pivot 操作符的威力。state_codes 作为标题行而不是列显示。下面是传统的表格化格式的图示:

     
    图 1 传统的表格化显示

    在交叉表报表中,您希望将 Times Purchased 列的位置掉换到标题行,如图 2 所示。该列变为行,就好像该列逆时针旋转 90 度而变为标题行一样。该象征性的旋转需要有一个支点 (pivot point),在本例中,该支点为 count(state_code) 表达式。

     
    图 2 执行了 Pivot 操作的显示

    该表达式需要采用以下查询语法:

    ...
    pivot 
    (
       count(state_code)
       for state_code in ('NY','CT','NJ','FL','MO')
    )
    ...
    

    第二行“for state_code ...”限制查询对象仅为这些值。该行是必需的,因此不幸的是,您需要预先知道可能的值。该限制在 XML 格式的查询将有所放宽,如本文后面部分所述。

    注意输出中的标题行:

    . TIMES_PURCHASED       'NY'       'CT'       'NJ'       'FL'       'MO'
      --------------- ---------- ---------- ---------- ---------- ----------
    

    列标题是来自表本身的数据:州代码。缩写可能已经相当清楚无需更多解释,但是假设您希望显示州名而非缩写(“Connecticut”而非“CT”),那又该如何呢?如果是这样,您需要在查询的 FOR 子句中进行一些调整,如下所示:

    select * from (
       select times_purchased as "Puchase Frequency", state_code
       from customers t
    )
    pivot 
    (
       count(state_code)
       for state_code in ('NY' as "New York",'CT' "Connecticut",
                      'NJ' "New Jersey",'FL' "Florida",'MO' as "Missouri")
    )
    order by 1
    
    
    Puchase Frequency   New York Connecticut New Jersey    Florida   Missouri
    ----------------- ---------- ----------- ---------- ---------- ----------
                    0      16601         90           0          0          0
                    1      33048        165           0          0          0
                    2      33151        179           0          0          0
                    3      32978        173           0          0          0
                    4      33109        173           0          1          0
    ...  
                                  
    and so on ...
                                

    FOR 子句可以提供其中的值(这些值将成为列标题)的别名。

    Unpivot

    就像有物质就有反物质一样,有 pivot 就应该有“unpivot”,对吧?

    好了,不开玩笑,但 pivot 的反向操作确实需要。假设您有一个显示交叉表报表的电子表格,如下所示:

     

    Purchase FrequencyNew YorkConnecticutNew JerseyFloridaMissouri
    01211100
    190014229878
    2866781339
    ....    


    现在,您希望将这些数据加载到一个名为 CUSTOMERS 的关系表中: 

    SQL> desc customers
     Name                                      Null?    Type
     ----------------------------------------- -------- ---------------------------
     CUST_ID                                            NUMBER(10)
     CUST_NAME                                          VARCHAR2(20)
     STATE_CODE                                         VARCHAR2(2)
     TIMES_PURCHASED                                    NUMBER(3)
    

    必须将电子表格数据去规范化为关系格式,然后再进行存储。当然,您可以使用 DECODE 编写一个复杂的 SQL*:Loader 或 SQL 脚本,以将数据加载到 CUSTOMERS 表中。或者,您可以使用 pivot 的反向操作 UNPIVOT,将列打乱变为行,这在 Oracle 数据库 11g 中可以实现。

    通过一个示例对此进行演示可能更简单。让我们首先使用 pivot 操作创建一个交叉表:

    create table cust_matrix
      as
      select * from (
         select times_purchased as "Puchase Frequency", state_code
         from customers t
      )
      pivot
      (
        count(state_code)
        for state_code in ('NY' as "New York",'CT' "Conn",
                           'NJ' "New Jersey",'FL' "Florida",
                           'MO' as "Missouri")
      )
      order by 1

    您可以查看数据在表中的存储方式:

    SQL> select * from cust_matrix
      2  /
    
    Puchase Frequency   New York       Conn New Jersey    Florida   Missouri
    ----------------- ---------- ---------- ---------- ---------- ----------
                    1      33048        165          0          0          0
                    2      33151        179          0          0          0
                    3      32978        173          0          0          0
                    4      33109        173          0          1          0
    ... and so on ...
    

    这是数据在电子表格中的存储方式:每个州是表中的一个列(“New York”、“Conn”等等)。

    SQL> desc cust_matrix
     Name                                      Null?    Type
     ----------------------------------------- -------- ---------------------------
     Puchase Frequency                                  NUMBER(3)
     New York                                           NUMBER
     Conn                                               NUMBER
     New Jersey                                         NUMBER
     Florida                                            NUMBER
     Missouri                                           NUMBER
    

    您需要将该表打乱,使行仅显示州代码和该州的购物人数。通过 unpivot 操作可以达到此目的,如下所示:

    select *
      from cust_matrix
    unpivot
    (
      state_counts
        for state_code in ("New York","Conn","New Jersey","Florida","Missouri")
    )
    order by "Puchase Frequency", state_code
    

    输出如下:

    Puchase Frequency STATE_CODE STATE_COUNTS
    ----------------- ---------- ------------
                    1 Conn                165
                    1 Florida               0
                    1 Missouri              0
                    1 New Jersey            0
                    1 New York          33048
                    2 Conn                179
                    2 Florida               0
                    2 Missouri              0
    ...  
                                  
    and so on ...
                                

    注意每个列名如何变为 STATE_CODE 列中的一个值。Oracle 如何知道 state_code 是一个列名?它是通过查询中的子句知道的,如下所示:

    for state_code in ("New York","Conn","New Jersey","Florida","Missouri")
    

    这里,您指定“New York”、“Conn”等值是您要对其执行 unpivot 操作的 state_code 新列的值。我们来看看部分原始数据:

    Puchase Frequency   New York       Conn New Jersey    Florida   Missouri
    ----------------- ---------- ---------- ---------- ---------- ----------
                    1      33048        165          0          0          0
    

    当列“纽约”突然变为一个行中的值时,您会怎样显示值 33048 呢?该值应该显示在哪一列下呢?上述查询中 unpivot 操作符内的 for 子句上面的子句对此进行了解答。您指定了 state_counts,它就是在生成的输出中创建的新列的名称。 
     

    Unpivot 可以是 pivot 的反向操作,但不要以为前者可以对后者所进行的任何操作进行反向操作。例如,在上述示例中,您对 CUSTOMERS 表使用 pivot 操作创建了一个新表 CUST_MATRIX。然后,您对 CUST_MATRIX 表使用了 unpivot,但这并没有取回原始表 CUSTOMERS 的详细信息。相反,交叉表报表以便于您将数据加载到关系表中的不同方式显示。因此 unpivot 并不是为了取消pivot 所进行的操作。在使用 pivot 创建一个表然后删除原始表之前,您应该慎重考虑。

    unpivot 的某些很有趣的用法超出了通常的强大数据操作功能范围(如上面的示例)。Amis Technologies 的 Oracle ACE 总监 Lucas Jellema 介绍了如何生成若干行特定数据用于测试。在此,我将对他的原始代码稍加修改,以显示英语字母表中的元音:

    select value
    from
    (
        (
            select
                'a' v1,
                'e' v2,
                'i' v3,
                'o' v4,
                'u' v5
            from dual
        )
        unpivot
        (
            value
            for value_type in
                (v1,v2,v3,v4,v5)
        )
    )
    

    输出如下:

    V
    -
    a
    e
    i
    o
    u
    

    该模型可以扩展为包含任何类型的行生成器。感谢 Lucas 为我们提供了这一巧妙招术。

    XML 类型

    在上述示例中,注意您指定有效的 state_codes 的方式:

    for state_code in ('NY','CT','NJ','FL','MO')
    

    该要求假设您知道 state_code 列中显示的值。如果您不知道都有哪些值,您怎么构建查询呢?

    pivot 操作中的另一个子句 XML 可用于解决此问题。该子句允许您以 XML 格式创建执行了 pivot 操作的输出,在此输出中,您可以指定一个特殊的子句 ANY 而非文字值。示例如下:

    select * from (
       select times_purchased as "Purchase Frequency", state_code
       from customers t
    )
                                   
    pivot xml
    (
       count(state_code)
        
                                  
    for state_code in (any)
    )
    order by 1
    

    输出恢复为 CLOB 以确保 LONGSIZE 在查询运行之前设置为大值。

     

    SQL> set long 99999
    

    较之原始的 pivot 操作,该查询有两处明显不同(用粗体显示)。首先,您指定了一个子句 pivot xml 而不只是 pivot。该子句生成 XML 格式的输出。其次,for 子句显示 for state_code in (any) 而非长列表的 state_code 值。该 XML 表示法允许您使用 ANY 关键字,您不必输入 state_code 值。输出如下: 
     

    Purchase Frequency STATE_CODE_XML
    ------------------ --------------------------------------------------
                     1 <PivotSet><item><column name = "STATE_CODE">CT</co
                       lumn><column name = "COUNT(STATE_CODE)">165</colum
                       n></item><item><column name = "STATE_CODE">NY</col
                       umn><column name = "COUNT(STATE_CODE)">33048</colu
                       mn></item></PivotSet>
    
                     2 <PivotSet><item><column name = "STATE_CODE">CT</co
                       lumn><column name = "COUNT(STATE_CODE)">179</colum
                       n></item><item><column name = "STATE_CODE">NY</col
                       umn><column name = "COUNT(STATE_CODE)">33151</colu
                       mn></item></PivotSet>
     
    ... and so on ...
    

    如您所见,列 STATE_CODE_XML 是 XMLTYPE,其中根元素是 <PivotSet>。每个值以名称-值元素对的形式表示。您可以使用任何 XML 分析器中的输出生成更有用的输出。

    除了 ANY 子句外,您还可以编写一个子查询。假设您有一个优先州列表并希望仅选择这些州的行。您将优先州放在一个名为 preferred_states 的新表中:

    SQL> create table preferred_states
      2  (
      3     state_code varchar2(2)
      4  )
      5  /
     
    Table created.
     
    SQL> insert into preferred_states values ('FL')
      2> /
     
    1 row created.
     
    SQL> commit;
     
    Commit complete.
    

    现在 pivot 操作如下所示:

    select * from (
       select times_purchased as "Puchase Frequency", state_code
       from customers t
    )
    pivot xml
    (
       count(state_code)
       for state_code in (select state_code from preferred_states)
    )
    order by 1
    /
    

    for 子句中的子查询可以是您需要的任何内容。例如,如果希望选择所有记录而不限于任何优先州,您可以使用以下内容作为 for 子句:

    for state_code in (select distinct state_code from customers)
    

    子查询必须返回不同的值,否则查询将失败。这就是我们指定上述 DISTINCT 子句的原因。

    结论

    Pivot 为 SQL 语言增添了一个非常重要且实用的功能。您可以使用 pivot 函数针对任何关系表创建一个交叉表报表,而不必编写包含大量 decode 函数的令人费解的、不直观的代码。同样,您可以使用 unpivot 操作转换任何交叉表报表,以常规关系表的形式对其进行存储。 Pivot 可以生成常规文本或 XML 格式的输出。如果是 XML 格式的输出,您不必指定 pivot 操作需要搜索的值域。

    有关 pivot 和 unpivot 操作的详细信息,请参考 Oracle 数据库 11g SQL 语言参考 

    展开全文
  • pivot与unpivot用法介绍 可以使用 PIVOT 和 UNPIVOT 关系运算符将表值表达式更改为另一个表。PIVOT 通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值...

    pivot与unpivot用法介绍

    可以使用 PIVOT 和 UNPIVOT 关系运算符将表值表达式更改为另一个表。PIVOT 通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合。UNPIVOT 与 PIVOT 执行相反的操作,将表值表达式的列转换为列值。

    以下是带批注的 PIVOT 语法:

    SELECT <非透视的列>,
    [第一个透视的列] AS <列名称>,
    [第二个透视的列] AS <列名称>,

    [最后一个透视的列] AS <列名称>,
    FROM
    (<生成数据的 SELECT 查询>)
    AS <源查询的别名>
    PIVOT
    (
    <聚合函数>(<要聚合的列>)
    FOR
    [<包含要成为列标题的值的列>]
    IN ( [第一个透视的列], [第二个透视的列],
    … [最后一个透视的列])
    ) AS <透视表的别名>
    <可选的 ORDER BY 子句>;

    例如:

    SELECT
    	*
    FROM
    	(
    		SELECT
    			'device_id' AS names,
    			COUNT (1) AS num
    		FROM
    			base_device_info
    		WHERE
    		device_state = 1
    		and	device_id = #{device_id}
    		UNION ALL
    			SELECT
    				'ori_station' AS names,
    				COUNT (1) AS num
    			FROM
    				base_station_info
    			WHERE
    				station_id = #{ori_station}
    			UNION ALL
    				SELECT
    					'des_station' AS names,
    					COUNT (1) AS num
    				FROM
    					base_station_info
    				WHERE
    					station_id = #{des_station}
    	) PIVOT (
    		SUM (num) FOR names IN (
    			'device_id' AS device_id,
    			'ori_station' AS ori_station,
    			'des_station' AS des_station
    		)
    	)
    

    请参考MSDN中关于PIVOT的用法:
    https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2008-r2/ms177410(v=sql.105)?redirectedfrom=MSDN

    https://blog.csdn.net/timothy_mok1989/article/details/83986776

    https://blog.csdn.net/qq_34409900/article/details/81907228

    展开全文
  • ORACLE中一个简单的UNPIVOT例子

    万次阅读 2015-02-10 11:40:25
    之前写过一个很简单的PIVOT的例子,这次补充一个UNPIVOT的例子,其实这个功能在日常应用中还是比较有用,以一个最简单的例子来说,数据库中有某个学生一学期的考试科目成绩,如下语句 SELECT '罗飞' STU_NAME, '...
  • UNPIVOT( AA FOR SJ IN(I1, I2, I3, ...
  • unpivot用法

    2019-08-20 21:49:07
     unpivot( 值 for 属性 in (返贫人口,贫困人口,返贫人数,贫困人数)) b 原例 SELECT   INDUSTRY_EXCP1_FAM AS 有纳税  , INDUSTRY_EXCP2_FAM AS 户籍问题  , decode(INDUSTRY_EXCP1_FAM,0,1,round...
  • Oracle 之 PIVOT 和 UNPIVOT用法

    千次阅读 2012-05-02 16:35:29
    Oracle之PIVOT 和 UNPIVOT用法
  • 一、这次讲啥 pivot的用法之前有写过了,然后前几天呢,某群友提了...pivot和unpivot用法我就不重复讲了,可以看下面的测试代码理解一下。 二、sql 1、测试数据准备 -- 建个表测试 create table orgCost( or...
  • create table student_test as select '张三' name,65 yuwen,77 shuxue,65 yingyu,85 wuli,292 total ...select 名称,科目,成绩 from student_test unpivot (成绩 for 科目 in (语文, 数学, 英语, 物理)); hive写法
  • 官网解释:https://www.oracle.com/cn/database/articles/technology/pivot-and-unpivot.html 一、列转行——UNPIVOT 1、UNPIVOT的简单应用 1.1 应用效果 1.2 sql语句 select * from 成绩表 unpivot ( 成绩 for ...
  • oracle11g开始内置了数据透视表pivot table这一功能,可以用来实现行列转换的功能,但是在数据量较大的时候使用性能就会较差。 pivot语法为: SELECT ... FROM ... PIVOT [XML] (pivot_clause pivot_for_...
  • TT_TEST2 p unpivot ( ( pool_id , selection_no ) FOR ( x1 , x2 ) IN ( ( pool1_id ,  selection1_no ) ,   ( pool2_id ,  selection2_no ) , ...
  • 针对Oracle 11g 之前版本的行列转换,之前整理过一篇文档:Oracle 行列转换 总结http://blog.csdn.net/tianlesoftware/article/details/4704858 在Oracle 11g中,Oracle 又增加了2个查询:pivot 和 unpivot。...
  • Oracle 行转列、列转行 的Sql语句总结
  • Oracle利用PIVOT和UNPIVOT进行行列转换

    千次阅读 2017-08-17 14:24:16
    在数据库开发中,我们会...、DECODE,或者PIVOT和UNPIVOT都可以实现该功能,本篇讲解下PIVOT和UNPIVOT的使用,希望可以让读者举一反三,了解行列转换的用法。 PIVOT语法 SELECT ...  FROM ...  PIVOT [XML]   
  • */ 五行(apple, banana, pear, orange, peach)转成五列: 3、运行环境 win10, oralce 11gR2,plsql developer 14 4、官网文档 Oracle 21c 官方文档链接:SQL Language Reference PLSQL语法在不同的oracle 版本中...
  • 原文链接:https://oracle-base.com/articles/11g/pivot-and-unpivot-operators-11gr1 本文介绍了如何使用新的PIVOT和UNPIVOT操作符在11g中,以及如何针对相同的问题给出11g之前的解决方案。 PIVOT PIVOT操作符以...
  • 这个例子是在live sql上...具体网址:https://livesql.oracle.com/apex/f?p=590:49 好像要注册一个Oracle账号 create table olympic_medal_winners ( olympic_year int, sport varchar2( 30 ), gender varc...
  • Oracle】pivot 与 unpivot 语法 pivot – 行转列函数 语法: pivot(聚合函数 FOR 需要转为列的值所在的列名 IN (需要转为列名的值) 示例: SELECT 'zhangsan' STUDENT, '20190709' BIRTHDAY, 'CHINESE' ...
  • 在mssql中大家都知道可以使用pivot...一、MSsqlserver中我们通常的用法 1、Sqlserver数据库测试 ---创建测试表 Create table s( [name] nvarchar(50), book nvarchar(50), saledNumber int ) ----...
  • pivot的格式select from( inner_query)pivot(aggreate_function for pivot_column in ( list of values))order...用法举例:select from (select month,prd_type_id,amountfrom all_sales)pivot (sum(amount) for mon...
  • oracle pivot / unpivot

    2019-07-03 10:46:00
    pivot 用法: select ... from ... pivot --> 注意:在from 与where 之间的关键字 (pivot_clause pivot_for_clause pivot_in_clause) where ... (1)pivot_clause:定义要进行聚集的列; (2...
  • pivot与unpivot函数

    2015-08-28 16:35:20
    pivot 与 unpivot 函数是SQL05新提供的2个函数 灰常灰常的实用
  • oracle中的Pivot 和Unpivot

    2014-11-25 11:07:11
    Pivot 和 Unpivot 使用简单的 SQL 以电子表格类型的交叉表报表显示任何关系表中的信息,并将交叉表中的所有数据存储到关系表中。 如您所知,关系表是表格化的,即,它们以列-值对的形式出现。假设一个表名为 ...
  • HH 终风且暴,顾我则笑,谑浪笑敖,中心是悼。 终风且霾,惠然肯来,莫往莫来,悠悠我思。 博客园 首页 ...Oracle行转列、列转行的Sql语句总结 多行转字符串 这个比较简单,用||或concat函数...

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 316
精华内容 126
关键字:

unpivot用法oracle