我的工作主要是报表,也没有逻辑层,全部是靠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'
- 浏览: 113480 次
- 性别:
- 来自: 江西
-
最新评论
-
July01:
推荐用StratoIO打印控件,支持网页、URL、图片、PD、 ...
java web 几种WEB报表的打印方式 -
zenmshuo:
考虑性能的话,用FlexReport比这个更好实现
java web 几种WEB报表的打印方式 -
zyh1991524:
我也在学习当中,呵呵。
共享 C++连接数据库代码 -
bukebuhao:
留有一份善心总会有收获的
回忆时光 -
a450065208:
研究一下最新的lucene版本啊。关于排序的就好了
全文检索---lucene学习笔记 有案例
相关推荐
本示例展示了如何使用Oracle PL/SQL中的游标来进行数据的分组统计,并通过程序逻辑实现了一种类似“行转列”的效果。这对于初学者来说是非常有价值的实践案例,可以帮助他们更好地理解游标的工作原理及其应用。同时...
Oracle的动态行转列技术,通过巧妙利用存储过程和动态SQL,为数据分析师和开发者提供了一种强大且灵活的数据转换工具。无论是对于初学者还是有经验的数据库管理员,掌握这一技能都将极大地提升数据处理的效率和效果...
本篇文章将详细探讨Oracle如何实现行转列为列的过程,以及在面对不确定列数时的解决方案。 在传统的SQL查询中,数据通常是以行的形式存储和展示。然而,在某些场景下,我们可能需要将同一类别的数据从多行转换为一...
综上所述,“游标动态数据库代码”涉及游标的基本操作,包括声明、打开、执行、获取数据、关闭,以及利用游标状态条件进行控制流程,同时涵盖了动态游标、FOR UPDATE、WHERE CURRENT OF及REF CURSOR等高级特性,这些...
本篇将深入探讨"fgdb_游标查找_游标实现数据库创建_"这个主题,通过分析`fgdb.py`文件中的内容,我们将理解如何利用游标进行数据库创建、查找和更改,以及如何实现两个地图数据的对应关系。 首先,让我们了解什么是...
现在我们有了每行及其下一个行号的信息,可以利用`SYS_CONNECT_BY_PATH`函数进行递归连接,从而实现行转列的目的。 ```sql SELECT NO, LTRIM(MAX(SYS_CONNECT_BY_PATH(VALUE, ';')), ';') AS VALUE, LTRIM(MAX...
这个函数通过打开一个游标并执行查询(在这里是选择`cf_news`表中的`id`和`title`列,按`id`排序)来实现。执行`open`语句后,函数将返回这个打开的游标。 然后,我们定义了一个名为`getemps`的过程,它接受一个`in...
另外,PL/SQL中引入了%TYPE属性,该属性允许在声明变量时使用表中某个列的数据类型,从而动态引用列的数据类型和大小。这样一来,如果数据库中列的数据类型发生变化,相应的变量不需要程序员手动修改代码,系统会...
6. **实现分页逻辑**:根据用户请求的页码和每页大小,我们可以计算出应该跳过的行数,然后利用游标滚动,只处理当前页的数据。 通过这种方式,JdbcTemplate结合游标滚动可以有效地解决大数据量的分页问题,提高...
合理使用游标可以简化复杂数据处理任务的实现,但在设计时需要权衡其对性能的影响以及可能带来的额外复杂性。通过理解和掌握游标的基本概念、语法结构及其高级特性,开发人员可以在适当的情况下有效地利用这一工具。
2. **遍历游标**:利用游标来遍历数据记录,逐条处理下属信息。 3. **使用游标变量**:创建并使用游标变量来进行数据处理。 #### 标签解析 标签“利用递归再将此下属的下属插入返回表”再次强调了本篇文章的重点...
下面将详细介绍一种不使用游标实现循环的方法:基于带有标识列的临时表。 首先,我们创建一个带有标识列(ID)的临时表,这个标识列在插入数据时自动递增,使得我们可以按顺序访问每一行。在创建临时表时,我们通常...
针对上述问题,本文介绍了一种更为简单高效的替代方案,即通过使用T-SQL的`IDENTITY`函数和`WHILE`循环结合`SELECT INTO`语句来实现类似游标的功能,但显著提升了处理效率。 #### 替代方案详解 假设原始数据表为`...
6. **游标属性**:在处理游标时,还可以利用游标的一些属性来检查状态,例如 `%ISOPEN`、`%NOTFOUND`、`%FOUND` 和 `%ROWCOUNT`。这些属性帮助我们了解游标是否已打开,最近一次`FETCH`是否成功找到行,以及已经提取...
本文详细介绍了Oracle中游标的使用方法,包括基本语法、简化使用方式以及如何利用游标进行数据更新和删除等高级操作。通过这些知识点的学习,读者可以更好地掌握如何在实际开发中运用游标来提高数据处理效率和灵活性...
### Oracle游标知识点详解 ...通过具体的案例分析,我们不仅学习了创建和修改表的基本语法,还掌握了如何利用游标实现对数据库中数据的批量处理。这些技能对于日常开发工作中处理复杂业务逻辑具有重要意义。
为了实现行转列,我们需要创建一个存储过程,该过程根据输入的`valtype`参数来决定如何处理数据。`valtype`的值1表示数值类型,2则表示其他类型。我们创建一个名为`test_pkg`的包,其中包含一个名为`p_test1`的存储...
通过游标,可以实现更精细的数据操作,例如在循环中处理数据,或者根据需要动态改变处理方式。 在实际应用中,可以利用游标解决诸如分页显示、逐行处理复杂操作等问题。例如,练习中提到的创建游标来显示特定班级的...
通过以上介绍,我们可以了解到Oracle游标的使用方法以及如何在存储过程中利用游标处理多行数据。无论是简单的数据检索还是复杂的事务处理,正确地使用游标都能极大地提高程序的效率和可读性。在实际开发过程中,根据...
为了提高数据库的性能和优化数据访问效率,理解并有效利用索引、存储过程、触发器、视图和游标等关键技术至关重要。以下是对这些关键概念的深入分析和总结。 **索引**是数据库中加速数据检索速度的重要手段,它类似...