易截截图软件、单文件、免安装、纯绿色、仅160KB

sql小计汇总 rollup用法实例分析

 这里介绍sql server2005里面的一个使用实例:
CREATE TABLE tb(province nvarchar(10),city nvarchar(10),score int)
INSERT tb SELECT '陕西','西安',3
UNION ALL SELECT '陕西','安康',4
UNION ALL SELECT '陕西','汉中',2
UNION ALL SELECT '广东','广州',5
UNION ALL SELECT '广东','珠海',2
UNION ALL SELECT '广东','东莞',3
UNION ALL SELECT '江苏','南京',6
UNION ALL SELECT '江苏','苏州',1
GO
1、 只有一个汇总
select province as 省,sum(score) as 分数 from tb group by province with rollup
结果:
广东 10
江苏 7
陕西 9
NULL 26
select case when grouping(province)=1 then '合计' else province end as 省,sum(score) as 分数 from tb group by province with rollup
结果:
广东 10
江苏 7
陕西 9
合计 26
2、两级,中间小计最后汇总
select province as 省,city as 市,sum(score) as 分数 from tb group by province,city with rollup
结果:
广东 东莞 3
广东 广州 5
广东 珠海 2
广东 NULL 10
江苏 南京 6
江苏 苏州 1
江苏 NULL 7
陕西 安康 4
陕西 汉中 2
陕西 西安 3
陕西 NULL 9
NULL NULL 26
select province as 省,city as 市,sum(score) as 分数,grouping(province) as g_p,grouping(city) as g_c from tb group by province,city with rollup
结果:
广东 东莞 3 0 0
广东 广州 5 0 0
广东 珠海 2 0 0
广东 NULL 10 0 1
江苏 南京 6 0 0
江苏 苏州 1 0 0
江苏 NULL 7 0 1
陕西 安康 4 0 0
陕西 汉中 2 0 0
陕西 西安 3 0 0
陕西 NULL 9 0 1
NULL NULL 26 1 1
select case when grouping(province)=1 then '合计' else province end 省,
case when grouping(city)=1 and grouping(province)=0 then '小计' else city end 市,
sum(score) as 分数
from tb group by province,city with rollup
结果:
广东 东莞 3
广东 广州 5
广东 珠海 2
广东 小计 10
江苏 南京 6
江苏 苏州 1
江苏 小计 7
陕西 安康 4
陕西 汉中 2
陕西 西安 3
陕西 小计 9
合计 NULL 26
本文来自: 脚本之家(www.jb51.net) 详细出处参考:http://www.jb51.net/article/18860.htm


相关文档:

sql语句 截取时间 只显示 年,月,日的格式


摘自http://blog.sina.com.cn/zhm85
SQL语句截取时间,只显示年月日(2004-09-12)
select CONVERT(varchar, getdate(), 120 )
‘getdate()’改为时间字段名‘createtime’
再重命名新加列(Select Name AS UName from Users)
例如 select convert(varchar(11),createtime,120) as Ndate fro ......

防止SQL注入完整ASP代码

<%
Dim Fy_Url,Fy_a,Fy_x,Fy_Cs(),Fy_Cl,Fy_Ts,Fy_Zx
'---定义部份   头------
Fy_Cl = 1   '处理方式:1=提示信息,2=转向页面,3=先提示再转向
Fy_Zx = "Error.Asp" '出错时转向的页面
'---定义部份   尾------
On Error Resume Next
Fy_Url=Request.ServerVariables("QUER ......

SQL 2005转换成2000 (SQL Server)


直接restore或附加应该是不行的, 用脚本+导数据肯定没有问题。
2005转到2000的步骤
1. 生成for 2000版本的数据库脚本
2005 的manger studio
-- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例
-- 右键要转到2000的库
-- 任务
-- 生成脚本
-- 在"脚本向导"的"选择数据库"中, ......

sql中常用动态的行转列

//取出源数据
select groupname,totalnum,inputdate,groupid into #temp from
 (select count(*)as totalnum,p.groupid,g.groupname,convert(nvarchar(10),inputdate,120) as 'inputdate'
 from person p left join admin_group g on p.groupid = g.groupid and deleteflag = '0'
 where p.inactive=' ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号