昨天接到一個(gè)需求御铃,需要在某個(gè)報(bào)表中把一個(gè)公司的下屬公司數(shù)據(jù)匯總到母公司中顯示,而下屬公司不再在報(bào)表中展示肚豺。假設(shè)母公司叫“義務(wù)毛巾廠”签赃,三個(gè)子公司分別叫“義務(wù)毛巾廠北京分廠”谷异、“義務(wù)毛巾廠上海分廠”分尸、“義務(wù)毛巾廠廣州分廠”,那么報(bào)表中只需要看到“義務(wù)毛巾廠”歹嘹,且其數(shù)據(jù)包含下屬三個(gè)分公司的數(shù)據(jù)箩绍。
由于只是針對(duì)這一個(gè)特例來匯總數(shù)據(jù),其他同級(jí)的公司還都照常顯示所有的母公司與子公司尺上,所以不能通過邏輯級(jí)別來做全局匯總材蛛。最后只能想到用CASE WHEN
語(yǔ)句來實(shí)現(xiàn)。
1. 在分析中編寫列公式
CASE "公司維"."公司名稱"
WHEN "義務(wù)毛巾廠" THEN "義務(wù)毛巾廠北京分廠"
WHEN "義務(wù)毛巾廠" THEN "義務(wù)毛巾廠上海分廠"
WHEN "義務(wù)毛巾廠" THEN "義務(wù)毛巾廠廣州分廠"
WHEN "威海咸魚公司" THEN "威海咸魚公司"
WHEN "臺(tái)北章魚須公司" THEN "臺(tái)北章魚須公司"
···
END
這樣寫了一長(zhǎng)串CASE WHEN
終于實(shí)現(xiàn)了功能怎抛,雖然后期維護(hù)有些麻煩卑吭,但好在公司組織維度不會(huì)經(jīng)常變動(dòng)。
2. 將上面這個(gè)列創(chuàng)建為提示過濾器
3. 創(chuàng)建儀表盤提示
提示中的公式也和上面一樣马绝。
4. 在下鉆表中也修改列公式和提示過濾器
如果主表有下鉆表(通過操作鏈接跳過去那種豆赏,不是通過邏輯維下鉆的),那么直接在下鉆表中和上面
1富稻、2 步一樣修改列公式和提示篩選器掷邦,保存后執(zhí)行報(bào)表,發(fā)現(xiàn)下鉆表也能如預(yù)期一樣的匯總椭赋!
后記
以前也遇到過類似情況抚岗,當(dāng)時(shí)一個(gè)同事說必須創(chuàng)建表示變量才行,其實(shí)沒有必要的纹份,我們仔細(xì)想一想苟跪,CASE WHEN
之后數(shù)據(jù)就自動(dòng)被匯總了廷痘,不需要表示變量這個(gè)媒介蔓涧。
另外,找了半天笋额,好像 dashboard 函數(shù)中沒有類似 Oracle 數(shù)據(jù)庫(kù)中 DECODE()
的函數(shù)元暴,但我們可以把上面的 CASE WHEN
語(yǔ)句改造如下,使之和 DECODE()
一樣簡(jiǎn)潔:
CASE
WHEN "公司維"."公司名稱" IN ('義務(wù)毛巾廠', '義務(wù)毛巾廠北京分廠', '義務(wù)毛巾廠上海分廠', '義務(wù)毛巾廠廣州分廠')
THEN '義務(wù)毛巾廠'
ELSE "公司維"."公司名稱"
END