-- 看看下面的,不知道对不对。
select a.姓名,a.培训班名称,b.期数,a.学习天数 from
(
select case grouping(姓名) when 0
then 姓名 else '(总计)' end as 姓名,
case grouping(培训班名称) when 0
then 培训班名称 else '合计' end as 培训班名称,
sum(学习天数) as 学习天数
from vwjypx
group by 姓名,培训班名称 with rollup
) a
left join
vwjypx b
on a.姓名=b.姓名 and a.培训班名称=b.培训班名称
order by a.姓名,a.学习天数
select a.姓名,a.培训班名称,b.期数,a.学习天数 from
(
select case grouping(姓名) when 0
then 姓名 else '(总计)' end as 姓名,
case grouping(培训班名称) when 0
then 培训班名称 else '合计' end as 培训班名称,
sum(学习天数) as 学习天数
from vwjypx
group by 姓名,培训班名称 with rollup
) a
left join
vwjypx b
on a.姓名=b.姓名 and a.培训班名称=b.培训班名称
order by a.姓名,a.学习天数
非常感谢!
能告诉我你的msn吗,想经常向你学习!
我已经pm给你。
姓名 培训班名称 期数 学习天数
艾红生 交换原理及维护 1 91
艾红生 交换原理及维护 2 32
艾红生 市场营销培训班 3 1得到的统计结果是:
姓名 培训班名称 期数 学习天数
艾红生 交换原理及维护 1 91
艾红生 交换原理及维护 2 32
艾红生 市场营销培训班 3 1姓名 培训班名称 期数 学习天数
艾红生 市场营销培训班 3 1
艾红生 交换原理及维护 1 123
艾红生 交换原理及维护 2 123
艾红生 合计 NULL 124
比如说,原始数据是:
姓名 培训班名称 期数 学习天数
艾红生 交换原理及维护 1 91
艾红生 交换原理及维护 2 32
艾红生 市场营销培训班 3 1得到的统计结果是:姓名 培训班名称 期数 学习天数
艾红生 市场营销培训班 3 1
艾红生 交换原理及维护 1 123
艾红生 交换原理及维护 2 123
艾红生 合计 NULL 124这里面第一期和第二期的学习天数都成了123天。
今天我得下网了,明天见。
谢谢!
(
select case grouping(姓名) when 0
then 姓名 else '(总计)' end as 姓名,
case grouping(培训班名称) when 0
then 培训班名称 else '合计' end as 培训班名称,
case grouping(期数) when 0
then 期数 else 期数 end as 期数,
sum(学习天数) as 学习天数
from vwjypx
group by 姓名,培训班名称,期数 with rollup) a where not (a.期数 is null and a.培训班名称<>'合计')
create table t
(
姓名 varchar(10),
培训班名称 varchar(50),
期数 int,
学习天数 int
)
insert t
select '艾红生','交换原理及维护',1,91
union select '艾红生','交换原理及维护',2,32
union select '艾红生','市场营销培训班',3,1
union select '李四','计算机网络安全培训',1,3
union select '李四','办公自动化培训',3,12
union select '李四','经营管理讲座 ',1,4
union select '王五','管理创新讲座',1,5
union select '王五','战略举措讲座',2,2
union select '王五','会计班',1,12
union select '王五','工业会计辅导班',2,3
gocreate view vwJypx
as
select * from t
goselect * from vwJypxselect * from
(
select case grouping(姓名) when 0
then 姓名 else '(总计)' end as 姓名,
case grouping(培训班名称) when 0
then 培训班名称 else '合计' end as 培训班名称,
case grouping(期数) when 0
then 期数 else 期数 end as 期数,
sum(学习天数) as 学习天数
from vwjypx
group by 姓名,培训班名称,期数 with rollup) a where not (a.期数 is null and a.培训班名称<>'合计')drop table t
drop view vwJypx
非常感谢!
也非常希望能成为你的朋友,可以经常向你请教,
不知是否能满足我的要求。
我的msn: [email protected]还有:我对grouping 和rollup的用法不太明白,
能帮忙解释一下吗?
再三麻烦,不好意思。