客戶的成功,我們的驕傲

我們的上萬家客戶來自電信、電力能源、石油石化、冶金礦產、金融保險、制造、流通、服務、科教文衛、IT高科技、政府及公共服務等各個行業,他們靠自己的力量成功實現了企業管理信息化,請來分享他們的成功故事,還有,你也能!

勤哲Excel服務器做復雜報表

詳情請聯系范展鵬 qq3051828416 電話15818855188

要求:從外部數據源圖一提取數據,按圖二報表格式自動提數

難點: ? a) 需要的數據分散在很多個字段里面,需要SQL知識轉換數據源格式;?b) 報表格式比較特殊,數據區域非連續,每個年級分為上下兩個區域,如果做成多個子表,定義數據項和設置提數公式都非常復雜。

技術方案: 把加工后的數據源根據學校和年份動態篩選到一個表,以這個表為新的數據源,通過Excel內置函數sumifs() 填充目標報表。

具體步驟:

1. 創建外部數據源視圖【v_unPivot_RawDt】,并通過unpivot處理,使之格式簡化,效果如 。

2. 進一步把上面視圖轉化為新視圖【v_data2】, 方便提數。



3. 創建主表,明細表,定義數據項



4. 創建表間公式,根據主表下拉選項,提取數據

5. 在Sheet1的目標報表內寫入sumifs公式,提取sheet2數據

最終效果

附錄

圖四?SQL源代碼

--【v_data_0】WITH a
AS (SELECT
SUBSTRING(grage_name, CHARINDEX('屆', grage_name) - 4, 4) AS Yr, CASE
WHEN SUBSTRING(nj, 1, 1) = 1 THEN
'一年級下學期'
WHEN SUBSTRING(nj, 1, 1) = 2 THEN
'二年級下學期'
WHEN SUBSTRING(nj, 1, 1) = 3 THEN
'三年級下學期'
WHEN SUBSTRING(nj, 1, 1) = 4 THEN
'四年級下學期'
WHEN SUBSTRING(nj, 1, 1) = 5 THEN
'五年級下學期'
WHEN SUBSTRING(nj, 1, 1) = 6 THEN
'六年級下學期' ELSE
'無定義' END AS 年級,
CAST(CAST(SUBSTRING(class_name, CHARINDEX('屆', class_name) + 1, 2) AS INT) AS VARCHAR
* FROM dbo.std
) SELECT Yr,
年級,
班級, Cat,
CAST(HC AS INT) HC,
tenant_name AS 學校
FROM a
UNPIVOT (
HC
FOR Cat IN (disabilityStu, insideArea, outsideArea, overSeas, class_stuCount, lodging, le countryside, girlStu, minorityNational, follow_class, foreignStu, fieldStu
)
) AS P;

--【v_data2】SELECT a.*,
b.表單名 AS 分類
FROM v_data_0 a
LEFT JOIN 字段映射 b
ON a.Cat = b.字段名;

關閉 在線客服
街机李逵劈鱼游戏