概要
Oracle APEX の「対話モード・レポート」のピポット機能を使い、
複数列を行に指定したときの見た目がイマイチだったので、その表示内容をCSSを使って変えたときのメモ。
環境
- Oracle Database 12c
- Oracle APEX 18.2
やりたいこと
対応内容
.text-display-none {
color: transparent;
}
-
先ほど定義したクラスをデータとして持つよう、抽出するクエリに列を追加する
- 文字の色を透明にする行のみ
<span class="#STYLE#">#LABEL#</span>
おまけ
今回のサンプルデータを作った時のクエリとピポットでの設定を載せておきます。
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.達成率(%)')
まとめ
ピポット後のソート順には依存してしまうため、使える場面は限られてしまうと思うが、
何とか表示を変えることができた。