SQL 查询合计方法及相应函数使用说明

来源:互联网 发布:ubuntu怎么打开终端 编辑:程序博客网 时间:2024/06/06 22:07

declare @t table(姓名 nvarchar(10),课程 nvarchar(20),分数 int)
insert into @t select N'王三',N'语文',89

insert into @t select N'王三',N'英语',87

insert into @t select N'王三',N'数学',90

insert into @t select N'李四',N'语文',65

insert into @t select N'李四',N'英语',75

insert into @t select N'李四',N'数学',80


select

    case when grouping(课程)=1 then '总分' else 姓名 end as 姓名--指定合计列

    ,isnull(课程'')

    ,sum(分数) as 分数
from 
@t

group by

    姓名

    ,课程

with rollup

having grouping(姓名)=0--禁止全部学生成绩合计

 

结果:

王三 英语 87
王三 数学 90
王三 语文 89
总分         266
李四 英语 75
李四 数学 80
李四 语文 65
总分         220

----以上引用自CSDN论坛

grouping函数说明:

使用GROUPING 函数时,一般是在有CUBE 或ROLLUP 时使用。
使用GROUPING 函数,其参数就是一个入参,一般就是某个字段名,或者是GROUP BY 子句中使用的表达式。
GROUPING 函数返回值是0 或1.是合计列返回1,不是则返回0.

通过使用GROUPING 函数,你可以发现哪一行是本来的记录,哪一行是小计.也可以发现那些NULL值,是原本数据的NULL值,还是由于CUBE 或ROLLUP 来形成的NULL值。

实际上,GROUPING 函数,在使用CUBE 和ROLLUP 时,非小计的结果行,其函数的返回值肯定是0。在小计的结果行,会根据这个小计是否是这个GROUPING 函数所对应的字段求小计,从而返回0 或1 的结果。

---以上引自"小樽的雨后"博客.



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 吃到鱼刺卡喉咙怎么办 带鱼刺扎进喉咙怎么办 喉咙被鱼刺卡了怎么办 喉咙里卡了鱼刺怎么办 卡了鱼刺在喉咙怎么办 日剧 哥哥太爱我怎么办 被竹叶青蛇咬了怎么办 被眼镜王蛇咬了怎么办 被黄蜂蛰了怎么办消肿 被黑色黄蜂蜇了怎么办 手指被黄蜂蛰了怎么办 被马蜂蛰了肿了怎么办 给青竹蛇咬了怎么办 被青竹蛇咬了怎么办 孕早期吃了桂皮怎么办? 怀孕后吃了八角怎么办 孕妇吃了点八角怎么办 煮粥老是溢出来怎么办 6个月的小孩咳嗽怎么办 10个月婴儿咳嗽怎么办 6个月婴儿感冒了怎么办 六个月宝宝有痰怎么办 9月婴儿牛奶过敏怎么办 一用粉底就过敏怎么办 7个月婴儿过敏怎么办 9个月宝宝腹泻怎么办 9个月宝宝拉肚子怎么办 5个月宝宝拉肚子怎么办 九个月大宝宝拉肚子怎么办 九个半月的宝宝拉肚子怎么办 9个月婴儿拉稀怎么办 九个月的宝宝拉肚子怎么办 9个月宝宝拉稀水怎么办 2岁宝宝腹泻拉水怎么办 18个月宝宝拉水怎么办 2个月宝宝拉稀水怎么办 2个月的宝宝腹泻怎么办 2个月的宝宝拉稀怎么办 宝宝不喝补液盐怎么办 4个月宝宝腹泻怎么办 6个月宝宝腹泻怎么办