我的工作主要是报表,也没有逻辑层,全部是靠SQL 来实现功能,行转列,列转行.现在给大家分享一下,看看有没有更好的方法啊!
alter procedure corss
@strTabName varchar(50), --表名
@strCol varchar(50), --列名
@strGroup varchar(50), --分组字段
@strNumber varchar(50), --被统计的字段
@strSum varchar(10)='Sum', --运算方式
@term_str varchar(100)='where rkey=1' --提交语句
as
declare @strSql varchar(8000),@strTempCol varchar(100)
execute('declare corss_cursor cursor for select distinct'+@strCol+'from'+@strTabName+@term_str+'for read only') --生成游标
begin
set nocount on
set @strSql='select'+@strGroup+','+@strSum+'('+@strNumber+') as ['+@strNumber+']' --查询的前半段
open corss_cursor
while(0=0)
begin
fetch next from corss_cursor --遍历游标,将列头信息放入变量@strTempCol
into @strTempCol
if(@@fetch_status<>0)break
set @strSql=@strSql+','+@strSum+'(case'+@strCol+'when'''+@strTempCol+'''then'+@strNumber+'else null end)as ['+@strTempCol+']'--gz查询
end
set @strSql=@strSql+'from'+@strTabName+'group by'+@strGroup --构造查询
--PRINT @strSql
execute(@strSql)
if @@error<>0 return @@error --如果出错,返回错误代码
close corss_cursor
deallocate corss_cursor return 0 --释放游标,返回0表示成功
end
exec corss ' DATA0060 ',' day(ENT_DATE) ',' day(ENT_DATE) ',' PARTS_ORDERED ','SUM',' WHERE DATEDIFF(YEAR,ENT_DATE,GETDATE())=0'
- 浏览: 108515 次
- 性别:
- 来自: 江西
最新评论
-
July01:
推荐用StratoIO打印控件,支持网页、URL、图片、PD、 ...
java web 几种WEB报表的打印方式 -
zenmshuo:
考虑性能的话,用FlexReport比这个更好实现
java web 几种WEB报表的打印方式 -
zyh1991524:
我也在学习当中,呵呵。
共享 C++连接数据库代码 -
bukebuhao:
留有一份善心总会有收获的
回忆时光 -
a450065208:
研究一下最新的lucene版本啊。关于排序的就好了
全文检索---lucene学习笔记 有案例
相关推荐
2.游标实现。 优点:思路逻辑简洁。 缺点:复杂和低效。3.利用临时表。 优点:思路逻辑简洁,执行效率高。SQL实现简单。 缺点:数据量大时耗用内存. 综合三种情况,决定“利用临时表”实现。实现效果原始表TB ...
8.3.2 GROUP BY子句根据多列组合行 8.3.3 ROLLUP运算符和CUBE运算符 8.3.4 GROUP BY子句中的NULL值处理 8.3.5 HAVING子句 8.3.6 HAVING子句与WHERE子句 8.3.7 SELECT语句各查询子句总结 第9章 ...
11.2.4 更新全部数据 11.2.5 利用子查询更新数据 11.2.6 通过视图更新表数据 11.3 数据的删除操作 11.3.1 DELETE语句的语法结构 11.3.2 删除指定行的数据 11.3.3 删除所有数据 11.3.4 通过视图删除表数据 11.3.5 ...
8.3.2 group by子句根据多列组合行 150 8.3.3 rollup运算符和cube运算符 151 8.3.4 group by子句中的null值处理 153 8.3.5 having子句 153 8.3.6 having子句与where子句 154 8.3.7 select语句各查询子句总结 ...
(1)声明游标,使用查询来定义游标的列和行 (2)打开游标,使用PL/SQL命令OPEN来打开一个声明的游标 (3)提取数据,从游标中重复提取每条记录到数据结构中,直到数据集合被提交 (4)关闭游标,使用完游标后将其关闭 3....
9.4 合理利用存储空间 9.4.1 采用正确的数据类型 9.4.2 存储参数的正确设置 9.4.3 定期回收无用表空间 9.4.4 归档历史表空间 第10章 备份与恢复机制 10.1 备份与恢复的方法 10.2 使用数据泵进行逻辑备份和恢复 ...
9.4 合理利用存储空间 9.4.1 采用正确的数据类型 9.4.2 存储参数的正确设置 9.4.3 定期回收无用表空间 9.4.4 归档历史表空间 第10章 备份与恢复机制 10.1 备份与恢复的方法 10.2 使用数据泵进行逻辑备份和恢复 ...
9.4 合理利用存储空间 9.4.1 采用正确的数据类型 9.4.2 存储参数的正确设置 9.4.3 定期回收无用表空间 9.4.4 归档历史表空间 第10章 备份与恢复机制 10.1 备份与恢复的方法 10.2 使用数据泵进行逻辑备份和...
9.4 合理利用存储空间 9.4.1 采用正确的数据类型 9.4.2 存储参数的正确设置 9.4.3 定期回收无用表空间 9.4.4 归档历史表空间 第10章 备份与恢复机制 10.1 备份与恢复的方法 10.2 使用数据泵进行逻辑...
7.14 利用dtuple实现对查询结果的灵活访问 302 7.15 打印数据库游标的内容 304 7.16 适用于各种DB API模块的单参数传递风格 306 7.17 通过ADO使用Microsoft Jet 308 7.18 从Jython Servlet访问JDBC数据库 310 ...
但是,因为所有SQL实现并不都是相同的,所以本书介绍的SQL主要适用于以下系统(需要时会给出特定的说明和注释): IBM DB2; Microsoft Access;.. Microsoft SQL Server; MySQL; Oracle; PostgreSQL...
伪列不是表的真实列,但是你可以象使用真实列一样使用伪列,常用伪列:rowid行的绝对物理编号,每一行是唯一的。rownum序号,返回查询结果的每行序号。系统时间sysdate,返回系统当前时间。 2.1.4.2 伪表 select * ...
动态游标与静态游标的区别? 84.dotnet由哪几个基本框架组成? 85.Oracle中SGA是什么? 86.web servers是什么? 87.UNIX中QT是什么意思? 88.在软件开发生命周期中的哪个阶段开始测试? 89.dotnet与J2EE的比较? 90....
数据定义语言Data Definition Language(DDL),用来建立数据库、数据对象和定义其列。例如:CREATE、DROP、ALTER等语句。 数据操作语言Data Manipulation Language(DML),用来插入、修改、删除、查询,可以...
通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。 [Page] 39.启动一个线程是用run()还是start()? 答:启动一个线程是调用start()方法,使...
行直接的安装。 Linux的最早起源是在1991年10月5日由一位芬兰的大学生Linux Torvalds (Torvalds@kruuna.helsinki.fi)写了 Linux核心程序的 0.02 版开始的,但其后的发展却几乎都 是由互联网上的 Linux社团(Linux ...