問題描述: 如何在Access2007 表中同時(shí)顯示明細(xì)、小計(jì)、總計(jì)?
ID fullname pay
2 a ¥500.00
4 a ¥600.00
5 a ¥700.00
6 b ¥800.00
7 b ¥55.00
有以上格式的表格,要根據(jù) FULLNAME 做小計(jì),然后全部的做總計(jì),變成以下格式
fullname pay
a ¥700.00
a ¥600.00
a ¥500.00
a 小計(jì) ¥1,800.00
b ¥55.00
b ¥800.00
b 小計(jì) ¥855.00
總計(jì) ¥2,655.00
該如何完成?
問題解答:首先,應(yīng)該了解, 表 是用來存儲數(shù)據(jù)的,而不是用來顯示統(tǒng)計(jì)結(jié)果以及顯示給最終用戶看的。類似工作應(yīng)該在 Access2007 報(bào)表 中完成,報(bào)表中可以分組且顯示小計(jì)。具體內(nèi)容你可以參考幫助或者 NORTHWIND.MDB 示例數(shù)據(jù)庫中的報(bào)表。
其次,在 ADO 中專門有一部分,稱為數(shù)據(jù)整形用來完成上述工作,但是它需要配合VB的 DATAGRID 等控件來完成顯示。 部分 VB 控件也可以使用在 Access2007 的窗體中。
最后,如果你實(shí)在想在 Access2007 的表格中完成,你可以使用組織 JET SQL 生成查詢的方式來完成。
select fullname,pay from pay
用來查詢出明細(xì)
SELECT pay.fullname & " 小計(jì)" AS 表達(dá)式1, Sum(pay.pay) AS payAll
FROM pay
GROUP BY pay.fullname & " 小計(jì)"
用來 分類匯總 小計(jì),注意上述技巧,在 FULLANME 字段旁加“ 小計(jì)”不只是為了好看,要將小計(jì)這行放在明細(xì)的下面完全要靠 ORDER BY FULLNAME 來實(shí)現(xiàn),你可以通過調(diào)整這一行來編排它的顯示順序
select "總計(jì)", sum(pay) from pay
用來顯示總計(jì)數(shù),請注意,“總”字的 ANSI 編碼必須大于 FULLNAME 字段中任何一個(gè)字符,否則就無法根據(jù) FULLNAME 排序?qū)⒖傆?jì)數(shù)放在表格的最下面一行。提示:不能用“總”的時(shí)候你可以用其他字符,甚至是符號也可以,只要它的機(jī)器碼夠大就行。
將上述語句用 UNION ALL 來組織就可以達(dá)到預(yù)想的效果。
select fullname,pay from pay
union all
SELECT pay.fullname & " 小計(jì)" AS 表達(dá)式1, Sum(pay.pay) AS payAll
FROM pay
GROUP BY pay.fullname & " 小計(jì)"
union all
select "總計(jì)", sum(pay) from pay
order by fullname
新聞熱點(diǎn)
疑難解答
圖片精選