这是培训数据库课程后的考试题上机题内容,昨天考的。当时做的时候没有看到表格中的“合计”,30分的题,估计只能得10分。。。
题目是这样的:
数据库上机试题
1、 题目:要求用存储过程实现如下报表,其他不限。 (30分)
(1)全省2007年分税种统计,结果表样如下:
税种 | 07年税额 |
营业税 |
|
个人所得税 |
|
印花税 |
|
资源税 |
|
企业所得税 |
|
房产税 |
|
城市维护建设税 |
|
车船税 |
|
烟叶税 |
|
城镇土地使用税 |
|
土地增值税 |
|
防洪保安费 |
|
其他罚没收入 |
|
文化建设事业费 |
|
价格调节基金 |
|
教育费附加收入 |
|
合计 |
|
|
|
(2)数据字典说明:
表:rk34 | ||
字段名 | 字段类型 | 字段解释 |
fsrq | varchar(10) | 发生日期 |
szdm | varchar(4) | 税种代码 |
zclx | varchar(3) | 注册类型 |
nse | decimal(16, 2) | 税额 |
dsdm | varchar(7) | 地市代码 |
nd | char(4) | 年度 |
表:dm_szdm | ||
字段名 | 字段类型 | 字段解释 |
ZSXM_DM | char(2) | 税种代码 |
ZSXM_MC | varchar(40) | 税种名称 |
(3)表脚本和数据,请看附件dm_szdm.txt和 rk34.txt,请直接执行脚本就可以。
(4)补充说明:完成后,请将算法和计算结果存成文档提交,文档须以答题人姓名为名。
题目考查的自己认为至少应该包括三点,一个是groupby分组统计、连接,一个是如何加入“合计”,再一个,表格题头中的“07年”如何替换成实际年份,就是可以根据存储过程传入的年份参数而相应修改。
当时考试的时候居然没有看到“合计”二字,只想到题头的“07年”如何改了,但没有找到方法,现在也没找到。
今天把“合计”功能做出来了。题头如何修改,还请大家指点,谢谢。
这是我今天补充后的存储过程:
CREATE PROCEDURE dbo.proc_shuizhongtongji
@nianfen varchar(4)
AS
BEGIN
create table #shuishoutongji (ZSXM_MC char(40),sum_nse decimal(16,2))
insert into #shuishoutongji
select dm_szdm.ZSXM_MC,t_dm.sum_nse
from dm_szdm,
(select szdm,sum(nse) sum_nse from rk34 where nd=@nianfen group by szdm) t_dm
where dm_szdm.ZSXM_DM=t_dm.szdm
declare @total decimal(16,2)
select @total=sum(sum_nse) from #shuishoutongji
insert into #shuishoutongji values('合计',@total)
select ZSXM_MC as '税种',sum_nse as '07年税额' from #shuishoutongji
drop table #shuishoutongji
END
执行代码:
exec proc_shuizhongtongji '2007'
注:以上代码在Sybase数据库中调试通过。