iT邦幫忙

0

鼎新BI自訂報表的問題

  • 分享至 

  • xImage

請問版上有人在用DSC的BI自訂報表嗎?

因為剛開始學,想請問一個問題:

我在作一個銷售預則交叉表,目前預到2個問題,可搭配下表看:

  1. 同一月份合成一個欄位,叫2016/8,其他月份也要比照..(我知道可以用分組,但是我每個要自動寄出,我不想每次都進去分組,希望報表可以自動轉換,可能要下函式..)

  2. 再來是同一月份的預測需抓最後一筆,以下例子,要抓2016/8/25的值5。

2016/8/1|2016/8/15|2016/8/24|2016/8/25|2016/9/2
------------- | -------------
0 |2 |0 |5 |3

上述2個問題,最後需要將BI的報表變下表的樣子:

2016/8 2016/9
5 3

目前也發信問客服中,只是都還沒回應,到時候會分享客服解法。

看更多先前的討論...收起先前的討論...
不知是用那一套BI ? (鼎新的BI系統中有分三的模組,內控預警/財務智慧/銷售智慧).只用過內控預警.
是內控預警嗎?
EXCEL 連接 SQL 然後下 POWER BI 應該比較快解決你的問題
jin741228 iT邦新手 5 級 ‧ 2016-10-07 08:04:06 檢舉
@大頭,我是使用BI自訂報表6.0版本,還沒有到您說的三模組唷~
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

2
尼克
iT邦大師 1 級 ‧ 2016-10-06 16:51:31

我是不懂鼎新的東西

但是依照你的需求,這是單純SQL語法可以作到。
第一個那是GROUP BY 觀念
第二個利用MAX()指令,配合select 挑選出最大值。

jin741228 iT邦新手 5 級 ‧ 2016-10-07 08:04:54 檢舉

好的,好的,我來試試,謝謝您!~

0
做工仔人!
iT邦大師 1 級 ‧ 2016-10-07 10:21:35

樓主要的這份報表:個人認為要在BI中完成難度很高.(應該說:做不到).
因為鼎新的自定義報表的做法就是只能用一行 SELECT 語法完成.
依樓主所開的規格:一定要用到T-SQL的變數.才能滿足.
有二種處理方式:

  1. 改變表頭的定義方式為:"本月","上月","上上月" 的方式或許可以做到.
  2. 騙系統:BI的作業方式是先利用排程將資料定時先撈到BI TABLE 中. 再利用程式功能來發 mail 給user.
    騙法:
    A. 要先找到二個TABLE:表頭欄位名稱的存放TABLE(TABLE A) 及 欄位內容的存放TABLE(TABLE B) .
    B. 先在系統中設定好表頭欄位稱-重點是欄位數量要對 及一行SQL敍述.語法要對-就是要能執行.但是在WHERE 條件的最後要加一段"1=2"(就是不產生任何資料).
    C. 先在SQL MANAGER 中用T-SQL寫好產生正確資料的內容程式並驗證正確後.
    D. 在C的程式最後將資料 INSERT 到 A項的TABLE B,並依需求 UPDATE TABLE A , 並驗證.
    E. 將這段程式放到 BI 的排程中(應該要放在BI排程的最後或B項排程之後).
    F. 執行BI看會不會發MAIL 及MAIL 的內容是否正確.

最重要的SELECT 語法去撈當月的最後一筆資料的語法重點:

declare @ym	char(6)  
SELECT @ym=year(getdate())+right(month(getdate())+100,2) -- 取年月  

select X.IMA01 ,   
YEAR(Y.OGA02) 年 ,MONTH(Y.OGA02) 月,  
CASE WHEN Y.OGB12 IS NULL THEN 0 ELSE Y.OGB12 END OGB12  
FROM OPENQUERY(ORC,'SELECT IMA01 FROM SIL1.IMA_FILE') X LEFT JOIN   
(select MAX(OGA02) OGA02 ,OGB04,OGB12  
         from openquery(ORC,'SELECT MAX(OGA02) OGA02,OGB04,OGB12 from   SIL1.OGA_FILE,sil1.ogb_file where oga01=ogb01 and year(oga02)=2014 GROUP BY    year(OGA02),MONTH(OGA02),OGB04,OGB12 ')  
GROUP BY MONTH(OGA02),OGB04,OGB12 ) Y  
  ON X.IMA01 =Y.OGB04   
WHERE  Y.OGB04 IS NOT NULL  

@ym:填 table a 表頭用
上列語法:供參考用.

我要發表回答

立即登入回答