美文网首页数据库
Oracle按照分区查询和分区统计结果的组合展现

Oracle按照分区查询和分区统计结果的组合展现

作者: SpaceCat | 来源:发表于2020-04-08 22:48 被阅读0次

    Oracle中经常会用到分区查询,按分区查询时,只需要在表名后面通过PARTITION关键字和括号指定分区名字(不能加引号),其它的和非分区的查询没有什么区别。如下是一个例子:

    SELECT t.*
    FROM t_tab PARTITION(P04) t
    

    分区表的数据量一般都比较大,有时候,某些查询必须指定分区才能查出来。但是,分区查询的结果,并不直观。为此,我们需要将这些不直观的结果组织在一起。
    抽象一下,实际上这个问题是,如何通过SQL查询将零散的值,组织成行和列的形式。
    在实际中,这个问题,我并没有一下反应过来。实际上,大概来讲这个分两步考虑:先组织列,假设有两个值,因为单个的值只有一行,分别放在不同的表中,取不同的列别名,两个表连接不带条件(笛卡尔积),就得到了一个一行两列的表;再组织行,不同的行合并只需要统一好列名,然后做union all就好了。
    为了方便区别,在每一行中可以再加一列,作为每一行的标识。下面是一个示意结果:

    select col0 RowNo, col1, col2, col3 from
    (select 'rowNo1' col0      from dual) TmpTblCol0,
    (select 'row1col1Val' col1 from dual) TmpTblCol1,
    (select 'row1col2Val' col2 from dual) TmpTblCol2,
    (select 'row1col3Val' col3 from dual) TmpTblCol3
    union all
    select col0 RowNo,col1, col2, col3 from
    (select 'rowNo3' col0      from dual) TmpTblCol0,
    (select 'row2col1Val' col1 from dual) TmpTblCol1,
    (select 'row2col2Val' col2 from dual) TmpTblCol2,
    (select 'row2col3Val' col3 from dual) TmpTblCol3
    union all
    select col0 RowNo,col1, col2, col3 from
    (select 'rowNo3' col0      from dual) TmpTblCol0,
    (select 'row3col1Val' col1 from dual) TmpTblCol1,
    (select 'row3col2Val' col2 from dual) TmpTblCol2,
    (select 'row3col3Val' col3 from dual) TmpTblCol3
    

    相关文章

      网友评论

        本文标题:Oracle按照分区查询和分区统计结果的组合展现

        本文链接:https://www.haomeiwen.com/subject/pilfmhtx.html