0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

looking back this year for my techAdvent Calendar 2019

Day 13

OracleAPEX ピポット表示での名称をみや

Last updated at Posted at 2019-12-12

概要

Oracle APEX の「対話モード・レポート」のピポット機能を使い、
複数列を行に指定したときの見た目がイマイチだったので、その表示内容をCSSを使って変えたときのメモ。

環境

  • Oracle Database 12c
  • Oracle APEX 18.2

やりたいこと

  • 以下の画像のような、グループごとの目標・実績の集計値をピポットを使って表示したとき、
    画像内の赤枠の部分の文字を表示しないようにしたかった。
    ape.png

対応内容

  • 文字の色を透明にする以下のCSSクラスをページ内で定義する
    apex_2.png
.text-display-none {
  color: transparent;
}
  • 先ほど定義したクラスをデータとして持つよう、抽出するクエリに列を追加する

    • 文字の色を透明にする行のみ
  • 文字の表示を変更したい列の書式で先ほど追加した列をclassとして設定するよう以下のように記述する
    apex_3.png

<span class="#STYLE#">#LABEL#</span>
  • 無事文字が消え、完成。見やすい!
    apex_4.png

おまけ

今回のサンプルデータを作った時のクエリとピポットでの設定を載せておきます。

  • ピポット設定
    apex_5.png

  • サンプルデータクエリ

SELECT 
  BASE.LABEL,
  BASE.AGG_CATEGORY,
  BASE.YM_DATE,
  DECODE(VAL_1.VAL, NULL, VAL_2.VAL, VAL_1.VAL) VAL,
  STYLE.STYLE STYLE
FROM 
  (
    SELECT
      *
    FROM (
      SELECT 
        CASE ROWNUM
          WHEN 1 THEN 'グループ1'
          WHEN 2 THEN 'グループ2'
          WHEN 3 THEN 'グループ3'
        END LABEL
      FROM DUAL CONNECT BY ROWNUM <= 3
    )
    CROSS JOIN (
      SELECT
        *
      FROM (
        SELECT 
          CASE ROWNUM
            WHEN 1 THEN '1.目標'
            WHEN 2 THEN '2.実績'
            WHEN 3 THEN '3.達成率(%)'
          END AGG_CATEGORY
        FROM DUAL CONNECT BY ROWNUM <= 3
      )
    )
    CROSS JOIN (
      SELECT
        TO_CHAR(TRUNC(ADD_MONTHS(A.YM_FROM, ROWNUM - 1),'MM'),'YYYYMM') AS YM_DATE
      FROM
      (
        SELECT
          TRUNC(TO_DATE('201801', 'YYYYMM'),'MM') AS YM_FROM,
          TRUNC(TO_DATE('201812', 'YYYYMM'),'MM') AS YM_TO
        FROM DUAL
      ) A
      CONNECT BY LEVEL <= MONTHS_BETWEEN (A.YM_TO , A.YM_FROM) + 1
    )
  ) BASE
  LEFT JOIN (
    SELECT
      1000000 VAL
    FROM DUAL
  ) VAL_1
  ON BASE.AGG_CATEGORY IN ('1.目標','2.実績')
  LEFT JOIN (
    SELECT
      100 VAL
    FROM DUAL
  ) VAL_2
  ON BASE.AGG_CATEGORY IN ('3.達成率(%)')
  LEFT JOIN (
    SELECT
      'text-display-none' STYLE
    FROM DUAL
  ) STYLE
  ON BASE.AGG_CATEGORY IN ('2.実績','3.達成率(%)')

まとめ

ピポット後のソート順には依存してしまうため、使える場面は限られてしまうと思うが、
何とか表示を変えることができた。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?