`

好垃圾本书中好有用的两个存储过程

阅读更多
来源:
SQL动态交叉表
http://blog.csdn.net/cjh47349038/archive/2008/11/12/3285082.aspx
5.2 交叉表决策分析方案   (书)
http://ajava.org/readbook/java/javafabd/9240.html
利用存储过程实现交叉表格式数据查询的一种通用方法 (建立临时表的,可学习,不实用)
http://www.cnblogs.com/pcbhyy/archive/2005/09/09/233362.html

1.
创建
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

CREATE  procedure proc_across_table 
@TableName as varchar(50),       --生成交叉表依据的表名 
@NewColumn as varchar(50),       --生成表头依据的字段名 
@GroupColumn as varchar(50),     --分组依据的字段名 
@StatColumn as varchar(50),      --欲统计的字段名 
@Operator as varchar(10)         --统计的运算方式 
AS 
DECLARE @SQL as varchar(1000), @Column as varchar(50) --定义参数 
EXECUTE ('DECLARE cursor_new_column CURSOR FOR SELECT DISTINCT ' + @NewColumn + ' from ' + @TableName + ' for read only ') --定义游标 
begin 
  SET nocount ON  
  SET @SQL='select ' + @GroupColumn + ', ' + @Operator + '(' + @StatColumn + ') AS [' + @Operator + ' of ' + @StatColumn + ']' --定义SQL语句头 
  OPEN cursor_new_column 
  while (0=0) 
  BEGIN --遍历游标 
    FETCH NEXT FROM cursor_new_column INTO @Column --通过游标获取列头信息 
    if (@@fetch_status<>0) break 
        SET @SQL = @SQL + ', ' + @Operator + '(CASE ' + @NewColumn + ' WHEN ''' + @Column + ''' THEN ' + @StatColumn + ' ELSE 0 END) AS [' + @Column + ']' --循环追加SQL语句 
  END 
SET @SQL = @SQL + ' from ' + @TableName + ' group by ' + @GroupColumn --定义SQL语句尾 
  EXECUTE(@SQL) --执行SQL语句 
  PRINT @SQL --输出SQL语句 
  IF @@error <>0 RETURN @@error --如果出错,则返回错误代码 
  CLOSE cursor_new_column --关闭游标 
  DEALLOCATE cursor_new_column RETURN 0 --释放游标,释放成功则返回0 
end
GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO




运行
exec   proc_across_table    'student1','subject','name','source','sum'
或
exec   proc_across_table    @TableName='student1',@NewColumn='subject',@GroupColumn='name',@StatColumn='source',@Operator='sum'  


结果



2.
创建
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

CREATE procedure procedure_across_table_b

@TableName as varchar(50),              --生成交叉表依据的表名

@NewColumn as varchar(50),              --生成表头依据的字段名

@BeforeColumnName as varchar(50),      --定义动态列开始名称

@AfterColumnName as varchar(50),       --定义动态列结束名称

@GroupColumn as varchar(50),            --分组依据的字段名

@FirstColumnName as varchar(50),       --定义第一列名称

@StatColumn as varchar(50),             --欲统计的字段名

@SecondColumnName as varchar(50),      --定义第二列名称

@Operator as varchar(10)                 --统计的运算方式

AS

DECLARE @SQL as varchar(1000), @Column as varchar(50) --定义参数

EXECUTE ('DECLARE cursor_new_column CURSOR FOR SELECT DISTINCT ' + 

                @NewColumn + ' from ' + @TableName + ' for read only ') --定义游标

begin

  SET nocount ON 

  SET @SQL='select ' + @GroupColumn + ' as '+ @FirstColumnName + ', ' + @Operator + 

                '(' + @StatColumn + ') AS [' + @SecondColumnName + ']' --定义SQL语句头

  OPEN cursor_new_column

  while (0=0)

  BEGIN --遍历游标

    FETCH NEXT FROM cursor_new_column INTO @Column --通过游标获取列头信息

    if (@@fetch_status<>0) break

        SET @SQL = @SQL + ', ' + @Operator + '(CASE ' + @NewColumn + ' WHEN ''' + 

                @Column + ''' THEN ' + @StatColumn + ' ELSE Null END) AS [' + 

                @BeforeColumnName + @Column + @AfterColumnName + ']' --循环追加SQL语句

  END

  SET @SQL = @SQL + ' from ' + @TableName + 

                ' group by ' + @GroupColumn --定义SQL语句尾

  EXECUTE(@SQL) --执行SQL语句

  PRINT @SQL --输出SQL语句

  IF @@error <>0 RETURN @@error --如果出错,则返回错误代码

  CLOSE cursor_new_column --关闭游标

  DEALLOCATE cursor_new_column RETURN 0 --释放游标,释放成功则返回0

end
GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO



运行
exec   procedure_across_table_b    'student1','subject','高中','科','name','姓名','source','科目数','count'


结果



/////////////////////////////////////////////////////
表中的数据





  • 大小: 12 KB
  • 大小: 12.4 KB
  • 大小: 17 KB
分享到:
评论

相关推荐

    实中好声音策划案.doc

    实中好声音策划案.doc

    简历中好字体资格证可加分.pdf

    简历中好字体资格证可加分.pdf

    简历中好字体资格证可加分.docx

    "简历中好字体资格证可加分"这一主题强调了两个关键因素:字体选择和资格证书。 首先,字体的选择对于简历的整体视觉效果至关重要。一个清晰、隽秀的字体能够体现出求职者的细致和专业。手写的简历,如果字迹工整,...

    富营养化池塘中好氧反硝化菌的分布及脱氮研究

    富营养化池塘中好氧反硝化菌的分布及脱氮研究,林娜,郭楚玲,从富营养化池塘水体和底泥中分别筛选到6和8株好氧反硝化菌,根据菌株的形态、常规生理和生化特性以及16SrDNA基因系列结果分析表明,

    强化生物除磷系统中好氧颗粒污泥形成与研究.docx

    【好氧颗粒污泥技术】 好氧颗粒污泥技术是一种在废水处理中高效去除磷的生物处理方法,其核心技术在于好氧颗粒污泥的形成与稳定。这种技术最初由Mishima等人在1991年通过好氧升流式污泥床反应器(AUSB)培养出来,...

    印染废水在日常运行中好氧微生物种群变化的研究

    本项目废水采用"絮凝沉淀+水解酸化+接触氧化"处理工艺,通过水质监测和调试过程中环境的变化对好氧生化池中生物相的变化进行了分析和研究,重点介绍了原生动物和后生动物的生活环境和形态以及在不同环境条件下所起的...

    SBR中好氧颗粒污泥快速培养及处理效率研究——以竹品蒸煮废水为例

    SBR中好氧颗粒污泥快速培养及处理效率研究——以竹品蒸煮废水为例,牛启桂,李金城,在SBR反应器中先后以葡萄糖和竹品蒸煮废水为碳源,用运行良好的UASB反应器中厌氧颗粒污泥和城市污水处理厂好氧活性污泥为接种泥,...

    活性污泥体系中好氧反硝化菌的选择与富集 (2005年)

    结果表明,这两种方式都能提高活性污泥在好氧条件下对TN的去除率.最终实现在好氧条件下(D0值≥5 mg/L),TN(进水TN为500 mg/L)的去除率仍可迭50%以上.从驯化后富集好氧反硝化茵的活性污泥中分离得到105株细茵,其中...

    细数活性污泥法数学模型(ASM).doc

    活性污泥1号模型(ASM1)描述了活性污泥系统中好氧、缺氧条件下的水解、有机物降解、微生物生长和衰减等8个反应过程,包含了异氧型和自养型微生物。模型包括了多种底物成分、氨氮、硝态氮和生物固体等12种物质的平衡...

    《搬过来搬过去》教案.pdf

    "《搬过来搬过去》教案.pdf" 根据提供的文件信息,我们可以总结出以下几个...本教案旨在引导幼儿通过绘本《搬过来,搬过去》了解两个朋友住进不同高度的房子带来的种种困难,并学会预测故事发展、解决困难和珍惜友谊。

    膜生物反应器中好氧颗粒污泥的形成及其性质* (2005年)

    研究了在不同容积负荷下(0.47kgCOD/(m3·d)、1.68kgCOD/(m3·d)、3.36kgCOD/(m3·d))一体式膜生物反应器中好氧颗粒污泥的形成、性质以及对于生活污水中的COD及氮的去除效果并对其形成机理进行了探讨。...

    BCG10 真正好用版,保证在VC6.0中好用,找了好久才找到

    BCG,全称为Business Control Group,是一个专门开发企业级UI解决方案的公司,他们的BCGControlBar Library(BCGControlBar库)是业界知名的开发工具,它包含了大量用于构建MFC(Microsoft Foundation Classes)应用...

    好氧颗粒污泥形成机理与模型

    以上各种机理的研究和分析,有助于更深入地理解好氧颗粒污泥的形成过程,并指导实际工程中好氧颗粒污泥的培养和应用。对于好氧颗粒污泥的数学模型建模,研究人员提出了“三阶段成形”机理假说,并尝试提出新的数学...

    Excel的日常50个使用技巧

    Excel是Microsoft Office套件中的一个强大电子表格程序,被广泛应用于数据分析、财务计算、报告制作等领域。以下是一些关于Excel的实用技巧: 1. **建立分类下拉列表填充项** 这个技巧有助于保持数据的一致性和...

    富营养化池塘中好氧反硝化菌的分布及脱氮研究 (2010年)

    根据菌株的形态、常规生理和生化特性以及16SrDNA基因系列结果分析表明,水体中的好氧反硝化菌以假单胞菌属为主(包括Pseudomonas和Ochrobactrum属),底泥中好氧反硝化菌以Achromobacter、嗜麦芽寡养单胞菌...

    VB6学习文档管理系统源码

    本软件提供对日常生活、工作中的学习笔记、图文并茂存储以及自由抓取网页中好的文章进行管理存储。知识点:  1、MSHFlexgrid 表格的灵活运用,其中的表格列项显示、隐藏功能很有参考意义,另外还有列项位置的动态...

    机器阅读理解: 预训练语言模型

    机器阅读理解(MRC)是自然语言处理(NLP)领域的一个重要研究方向,它的主要目标是让计算机能够像人类一样理解和解析文本。随着深度学习技术的快速发展,特别是深度神经网络,尤其是注意力机制模型的广泛应用,MRC...

    Struts in Action中文版(PDF)

    并且书中好包含展示此书介绍的最好实践技术的几个示例应用程序。本书旨在帮助那些需要关于如何使他们的应用运行在Struts下面的实际和实战技术的专业技术人员。 开发者用Struts构建Web应用一般在其应用的各部分使用...

Global site tag (gtag.js) - Google Analytics