T1:
姓名 性别 年龄 分类1 分类2 分类3 。。
。。结果是把查询的结果后增加合计SUM(分类1),SUM(分类2),SUM(分类3)。
注意,T1表中的分类是动态的,因为T1表是临时表,所以在取数据前,并不知道分类有多少个。
姓名 性别 年龄 分类1 分类2 分类3 。。
。。结果是把查询的结果后增加合计SUM(分类1),SUM(分类2),SUM(分类3)。
注意,T1表中的分类是动态的,因为T1表是临时表,所以在取数据前,并不知道分类有多少个。
解决方案 »
- sqlserver2000和sqlserver2008安装在同一个机器上,启动出问题了?
- 关于查找效率的问题!!
- 一直很困惑的基本问题: 如何配置开发机, 以及开发完成以后,如何配置部署机? 及相关版权?
- 想开发一个服装发放与领取管理系统,在数据库建模上有难题?
- sql分组统计显示的问题
- 菜鸟求救:如何用sql脚本创建数据库?急,在线等待。
- 如何检测SQLSERVER的AGENT是否有被开启
- 如何进行多数据库联合查询?
- SQL删除重复数据的问题
- 关于MySQL中DATA类型的数字格式插入问题
- SQL技术中对于年龄的定义类型是用int还是用datetime?
- 如何在sql语句中实现先查询,得到结果后再将查询的记录删除?
-- Author :fredrickhu(小F,向高手学习)
-- Date :2009-09-03 19:50:10
-- Verstion:
-- Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)
-- Nov 24 2008 13:01:59
-- Copyright (c) 1988-2005 Microsoft Corporation
-- Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)
--
----------------------------------------------------------------
--> 测试数据:[tb]
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([姓名] varchar(4),[学期] int,[语文] int,[数学] int,[英语] int,[政治] int)
insert [tb]
select '张三',1,70,60,80,30 union all
select '张三',2,80,90,75,40 union all
select '张三',3,50,70,85,60 union all
select '李四',1,66,80,90,55 union all
select '李四',2,75,70,85,65
--------------开始查询--------------------------
select
case when grouping(姓名)=1 then '合计' else cast(姓名 as varchar) end 姓名,
case when grouping(学期)=1 and grouping(姓名)=0 then '小计' else cast(学期 as varchar) end 学期,
sum(语文) as 语文,sum(数学) as 数学,sum(英语) as 英语,sum(政治) as 政治
from
tb
group by
姓名,学期
with rollup ------------------------------------------------------结果-------------------------------------------------------
/*姓名 学期 语文 数学 英语 政治
------------------------------ ------------------------------ ----------- ----------- ----------- -----------
李四 1 66 80 90 55
李四 2 75 70 85 65
李四 小计 141 150 175 120
张三 1 70 60 80 30
张三 2 80 90 75 40
张三 3 50 70 85 60
张三 小计 200 220 240 130
合计 NULL 341 370 415 250(8 行受影响)
*/