先看看效果:
報表軟體:finereport
1.分析-與正常查詢的對比
如果不做這種樹狀結構展開的報表的話,正常的sql應該是這樣寫的,以單據表為例,假設單據的機構為分公司,經營部
select 分公司編碼,分公司名稱,經營部編碼,經營部名稱,sum(數量) 總數量,sum(金額) 總金額
from order_header,order_itemoi
whereoh.order_id=oi.order_id
andoh.party_id_from in ('$(分公司編碼)')
andoh.confirm_date >to_date('$','yyyy-mm-dd')
andoh.confirm_date
group by 分公司編碼,分公司名稱,經營部編碼,經營部名稱
2.sql-over partition的應用
如果要做成在經營部級別彙總金額和數量,同時在分公司級別也要彙總數量和金額的話,那麼,需要在1中的基礎上做增加,在每一行上增加一列,來表示當前行所在的分公司的彙總的金額和數量,sql如下
select 分公司編碼,分公司名稱,經營部編碼,經營部名稱,
sum(數量) 經營部總數量,sum(sum(數量)) over (partition by 分公司編碼) 分公司數量,
sum(金額) 經營部總金額,sum(sum(金額)) over (partition by 分公司編碼) 分公司金額
fromorder_header,order_item oi
whereoh.order_id=oi.order_id
andoh.party_id_from in ('$(分公司編碼)')
andoh.confirm_date >to_date('$','yyyy-mm-dd')
andoh.confirm_date
group by 分公司編碼,分公司名稱,經營部編碼,經營部名稱
3.展示介面的設定和訪問注意事項
展示介面的設定,一點點寫比較麻煩,我就不講了。最後,訪問的時候需要在url後面加上引數op=sheet
finereport報表製作詳細過程
一般來說,乙個完整的報表設計流程,大體分為如下幾個步驟 1 開啟設計器 2 配置資料來源 3 新建報表 4 配置私有資料來源 5 報表設計 6 預覽報表 7 發布報表 第一部分 配置資料來源 步驟一 新建資料庫 開啟報表設計器,在設計器最上方的選單欄當中,選擇伺服器,在該下拉列表當中選擇公有的資料來...
FineReport父子格實現動態引數注入
深入學習finereport後發現其功能及其強大,之前使用儲存過程實現的報表完全可以使用finereport本身的功能實現。當你需要的表名,查詢條件等均未知的時候,使用 動態引數注入 即可實現將乙個查詢的結果集當成另乙個查詢的條件,甚至表名來使用。使用動態引數注入的時候同時要配合父子格的使用。一 父...
finereport報表 動態格間運算 一
一 運算子 絕對值 a2 a2 1 a2 標示從列a縱向第2單元格開始,1 表示第1個位置的單元格 a2 1 代表索引,表示從a列縱向開始往下,第1個單元格的位置的索引。a2是取值物件 同理 b2 a2 1 取b列的值也是如此 當 1 時,表示倒數第1 當 2 時,表示倒數第2 報表顯示值如下 如下...