2.如果year不想累加,可以写成
Select year,month,area,sum(total_sale) from SaleOrder group by year, rollup(month,area) 另外Oracle 9i还支持如下语法: Select year,month,area,sum(total_sale) from SaleOrder group by rollup((year,month),area)[@more@]
Oracle SQL依然无可替代--《Mastering Oracle SQL》
1.报表合计专用的Rollup函数 销售报表 广州 1月 2000元 广州 2月 2500元 广州 4500元 深圳 1月 1000元 深圳 2月 2000元 深圳 3000元 所有地区 7500元以往的查询SQL:Select area,month,sum(money) from SaleOrder group by area,month然后广州,深圳的合计和所有地区合计都需要在程序里自行累计1.其实可以使用如下SQL: Select area,month,sum(total_sale) from SaleOrder group by rollup(area,month)就能产生和报表一模一样的纪录[@more@
第十二章 十赌九骗
第十二章 十赌九骗 云玉真把贵宾室的门关上,道:“现在没有人可听到我们的说话,这处的墙壁都是特制 的,可免声音外泄,影响别人徐子陵在一章坐下道:*查海知否我是谁?* 云玉真在他左旁坐好,道:*我当然不会告诉他你是徐子陵,只说和你相识,有点交 情。我一向交游广阔,他该干会怀疑,谁想得到子陵的赌术这么厉害。*徐子陵叹一口气, 苦笑道:*我们还有甚么好说的?*云玉真沉默片晌,轻轻的问:*寇仲有来吗?*徐子陵 感到无法再信任她,摇头道:*我是与朋友来的,却不是寇仲。*云玉真往他瞧去,咬
计算查询结果的字节数
计算查询结果的大小 问题描述: 从数据库中筛选出一部分记录并统计出这部分记录的总大小,用K或M表示,该怎么处理?答: 把检索出现的记录存放到临时表,然后再计算就可以。--示例:--将满足条件的数据存储到临时表 SELECT * INTO # FROM syscolumns--计算处理 EXEC('USE tempdb;EXEC sp_spaceused ''#'' DROP TABLE #')[@more@]
合并有数据的列
BOM数据排序及分级显示 --示例数据:CREATE TABLE t1( Name varchar(20), Col1 varchar(2), Col2 varchar(2), Col3 varchar(2))INSERT t1(Name,Col1,Col2,Col3)SELECT 'A','1','','' UNION ALLSELECT 'A','2','','' UNION ALLSELECT 'A','3','','' UNION ALLSELECT 'A','','4','' UNION ALLSELECT 'A','','5','' UNION ALLSELECT 'A','','6','' UNION ALLSELECT 'A','','7','' UNION ALLSELECT 'A','','','8' UNION ALLSELECT 'A','','','9' UNION ALLSELECT 'A','','','0' UNION ALLSELECT 'B','11','','' UNION ALLSELECT 'B
限制列数的交叉表
限制列数的交叉数据报表 --示例数据:CREATE TABLE test(factoryid varchar(20),bagid int,roll int,number numeric(9,1),UNIQUE(bagid,roll))INSERT test SELECT 'M-CS-11#6/GREEN',1,1, 86UNION ALL SELECT 'M-CS-11#6/GREEN',1,2, 59.5UNION ALL SELECT 'M-CS-11#6/GREEN',1,3, 31.2UNION ALL SELECT 'M-CS-11#6/GREEN',1,4, 42UNION ALL SELECT 'M-CS-11#6/GREEN',1,5, 31UNION ALL SELECT 'M-CS-11#6/GREEN',1,6, 114.3UNION ALL SELECT 'M-CS-11#6/GREEN',2,7, 101UNION ALL SELECT 'M-CS-11#6/GREEN',2,8, 83.9UNION
交叉报表处理实例
两种比较特殊的交叉数据报表处理 --示例数据:CREATE TABLE tb(ID varchar(10),NGNO char(1),QTY int)INSERT tb SELECT '200505','A',10UNION ALL SELECT '200505','B',20UNION ALL SELECT '200505','C',30UNION ALL SELECT '200506','B',10UNION ALL SELECT '200506','C',20UNION ALL SELECT '200506','D',30UNION ALL SELECT '200506','E',40GO交叉数据报表要求1: 按ID列分组,将NGNO列水平显示为多列,但每列由NGNO的大小顺序决定,而不是由NGNO的值决定,对于示例数据,最终的结果要求如下:ID col1 col2 col3 col
先进先出的数据冲销处理
先进先出的数据冲销处理 --示例数据:create table 销售订单(单号 varchar(10),日期 datetime,货品编码 varchar(10),数量 int)insert 销售订单 select 'A1','2005-5-1','ABCD',100 union allselect 'A2','2005-5-3','ABCD',200 union allselect 'A3','2005-5-4','ABCD',300 union allselect 'A4','2005-5-8','ABCD',500create table 销售发货单(单号 varchar(10),日期 datetime,货品编码 varchar(10),数量 int)insert 销售发货单select 'B1','2005-5-05','ABCD',250 union allselect 'B2','2005-5-07','ABCD',100 union allselect 'B3','20
根据排序定义表排序数据
根据排序定义表排序数据 测试数据:create table tb1(id int,col1 varchar(10),col2 int)insert tb1 select 1,'aa',111union all select 2,'aa',111union all select 3,'aa',111union all select 4,'bb',222union all select 5,'bb',222union all select 6,'cc',333union all select 7,'cc',333union all select 8,'cc',333union all select 9,'cc',333create table tb2(col1 varchar(10),size int)insert tb2 select 'aa',2union all select 'cc',2union all select 'bb',0go 问题描述: tb1 与 tb2 通过 col2 关联,tb2的col
无规律自定义分段的分类汇总+交叉表处理
--测试数据create table tb(编号 int,性质 varchar(10),数量 int,指标1 decimal(10,1),指标2 decimal)insert tb select 1 ,'00' ,10,1.1 ,10union all select 2 ,'01' ,20,1.2 ,20union all select 3 ,'00' ,30,1.5 ,10union all select 4 ,'01' ,40,1.9 ,35union all select 5 ,'00' ,40,1.2 ,20/*--处理要求要求得到下述结果:a 范围 性质(00) 性质(01) ----------------- ---------------- -------------- -------------- 指标1 <1.0 .00
逐月对比的交叉表处理
--测试数据create table tb(year int,month int,No varchar(10),Name varchar(10),部门 varchar(10),工资 int)insert tb select 2004,10,'A001','AAA','DDD',1000union all select 2004,10,'B001','BBB','DDD',800union all select 2004,11,'A001','AAA','DDD',1100union all select 2004,11,'B001','BBB','DDD',1000union all select 2004,12,'A001','AAA','DDD',1200union all select 2004,12,'B001','BBB','DDD',1050/*--处理要求 将月份做为字段,并且反应逐月的工资增幅,例如上面的数据要求结果如下,注意最小的年月是没有增幅的No
模拟多级表头的分组统计
--测试数据create table 单位表 (单位代码 varchar(10),单位名称 varchar(50))insert 单位表 values('01' ,'中国单位') --1级insert 单位表 values('0101' ,'山东单位') --2级insert 单位表 values('010101' ,'山东济南单位') --3级insert 单位表 values('010102' ,'山东青岛单位') --3级insert 单位表 values('01010201','山东青岛即默单位一') --4级insert 单位表 values('01010202','山东青岛即默单位二') --4级insert 单位表 values('0102' ,'山西单位')
动态分组查询
--示例数据create table 表(ID int,NUM int)insert 表 select 1,2union all select 2,3union all select 3,2union all select 4,2union all select 5,12union all select 6,2union all select 7,1union all select 8,5union all select 9,1go/*--问题说明:输入分组参数,比如输入 "3,6" ,实现按 ID<=3,3<ID<=6,ID>6 分组查询输入分组参数,比如输入 "2,5,8" ,实现按 ID<=2,2<ID<=5,5<ID<=8,ID>8 分组查询--*/--查询的存储过程create proc p_qry@numlist varchar(1000)asset nocount onde
VB实现SQL Server数据库备份/恢复
'*************************************************************************'**模 块 名:fBackupDatabase_a'**描 述:备份数据库,返回出错信息,正常恢复,返回""'**调 用:fBackupDatabase_a "备份文件名","数据库名"'**参数说明:'** sBackUpfileName 恢复后的数据库存放目录'** sDataBaseName 备份的数据名'** sIsAddBackup 是否追加到备份文件中'**说 明:引用Microsoft ActiveX Data Objects 2.x Library'**创 建 人:邹建'**日 期:2003年12月09日
压缩数据库日志
经常在CSDN上看到网友发帖说,压缩日志文件处理不当,导致数据库损坏,甚至不能恢复数据,于是就写了一个通用的数据库日志文件压缩的存储过程来解决此问题:/*--压缩数据库的通用存储过程 压缩日志及数据库文件大小 因为要对数据库进行分离处理 所以存储过程不能创建在被压缩的数据库中--邹建 2004.03(引用请保留此信息)--*//*--调用示例 exec p_compdb 'test'--*/use master --注意,此存储过程要建在master数据库中goif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_compdb]') and OBJECTPROPERTY(id, N'IsProced
数据库备份与还原处理
利用T-SQL语句,实现数据库的备份与还原的功能体现了SQL Server中的四个知识点: 1. 获取SQL Server服务器上的默认目录 2. 备份SQL语句的使用 3. 恢复SQL语句的使用,同时考虑了强制恢复时关闭其他用户进程的处理 4. 作业创建SQL语句的使用 /*1.--得到数据库的文件目录 @dbname 指定要取得目录的数据库名 如果指定的数据不存在,返回安装SQL时设置的默认数据目录 如果指定NULL,则返回默认的SQL备份目录名--邹建 2003.10(引用请保留此信息)--*//*--调用示例 select 数据库文件目录=dbo.f_getdbpath('tempdb') ,[默认SQL S
if exists (select * from dbo.sysobjects where id = object_id(N'[tb]') and OBJECTPROPERTY(id, N'IsUse
-- =====================================================-- 直接查询的应用实例-- ===================================================== -- 1. 每个叶子结点的 FullName WITH stb([id],[FullName],[pid],[flag])AS( SELECT [id],CAST(RTRIM([name]) as nvarchar(4000)),[pid],1 FROM [tb] A WHERE NOT EXISTS( SELECT 1 FROM [tb] WHERE [pid]=A.[id]) UNION ALL SELECT A.[id],RTRIM(B.[name])+'/'+A.[FullName],B.[pid],A.flag+1 FROM stb A,[tb] B WHERE A.[pid]=B.[id])SELECT [id],[FullNa
SQL Server 2005 中的树形数据处理示例-1
if exists (select * from dbo.sysobjects where id = object_id(N'[tb]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [tb]GO-- 示例数据create table [tb]([id] int PRIMARY KEY,[pid] int,name nvarchar(20))INSERT [tb] SELECT 1,0,N'中国'UNION ALL SELECT 2,0,N'美国'UNION ALL SELECT 3,0,N'加拿大'UNION ALL SELECT 4,1,N'北京'UNION ALL SELECT 5,1,N'上海'UNION ALL SELECT 6,1,N'江苏'UNION ALL SELECT 7,6,N'苏州'UNION ALL SELECT 8,7,N'常熟'UNION ALL SELECT 9,6,N'南京'UNION
BOM数据排序及分级显示
--示例数据:CREATE TABLE BomSub(Parent_item varchar(10),Sub_item varchar(10))INSERT BomSub SELECT 'A' ,'AA'UNION ALL SELECT 'A' ,'AB'UNION ALL SELECT 'AA' ,'AAA'UNION ALL SELECT 'AA' ,'AAB'GO问题描述: Parent_item是父项,Sub_item是子项,根据根据父子关系排序,并生成每个项目的层次。对于示例数据,要求结果如下:Parent_item LEVEL----------- -------A 0|-AA 1|--AAA 2|--AAB 2|-AB 1(所影响的行数为 5 行) --查询处理的存储过程CREATE PROC P_QRYASDECLARE @t
三级分类数据的排序
--示例数据:CREATE TABLE tb(ProdCateID int,ProdCateName nvarchar(10),ParentCateID int)INSERT tb SELECT 1, N'服装' ,0UNION ALL SELECT 2, N'箱包' ,0UNION ALL SELECT 3, N'内衣' ,1UNION ALL SELECT 4, N'外套' ,1UNION ALL SELECT 5, N'男箱包' ,2UNION ALL SELECT 6, N'女箱包' ,2UNION ALL SELECT 7, N'内裤' ,3UNION ALL SELECT 8, N'文胸' ,3UNION ALL SELECT 9, N'男外套' ,4UNION ALL SELECT 10,N'女大衣' ,4UNION ALL SELECT 11,N'男用钱包',5UNION ALL