---sql: T-SQL 统计计算(父子關係,樹形,分級分類的統計)
---2014-08-26 塗聚文(Geovin Du)
CREATE PROCEDURE proc_Select_BookKindSumReport
AS
DECLARE @temp TABLE
(
BookKindID INT IDENTITY(1, 1) ,
BookKindName VARCHAR(10),
BookKindParent int,
BookKindSum int
)
--
declare @id int,@grouid nvarchar(500),@sql nvarchar(4000),@cstucount int,@c int
DECLARE @tempId INT ,
@tempName VARCHAR(10),
@tempParent int
drop table #temp
select * into #temp from BookKindList
WHILE EXISTS ( SELECT BookKindID FROM #temp )
BEGIN
SET ROWCOUNT 1
SELECT @tempId = [BookKindID] ,
@tempName = [BookKindName],
@tempParent=BookKindParent
FROM #temp
SET ROWCOUNT 0
--
delete from #temp where BookKindID = @tempId
set @id=@tempId
select @grouid=dbo.GetBookKindGroupId (@id)
select @sql='SELECT @c=count(*) FROM BookInfoList where BookInfoKind in ('+@grouid+')'
--exec (@sql)
exec sp_executesql @sql,N'@c int output',@cstucount output--将exec的结果放入变量中的做法
--select @cstucount as 'sum'
--PRINT '记录:----'+ cast(@tempId as varchar(20))+',' + @tempName+','+ cast(@tempParent as varchar(20))+' sum:'+ cast(@cstucount as varchar(50))
insert into @temp(BookKindName,BookKindParent,BookKindSum) values(@tempName,@tempParent,@cstucount)
END
select * from @temp order by BookKindParent
GO --利用游标来遍历表
--定义表变量
DECLARE @temp TABLE
(
BookKindID INT IDENTITY(1, 1) ,
BookKindName VARCHAR(10),
BookKindParent int
) DECLARE @tempId INT ,
@tempName VARCHAR(10),
@tempParent int
DECLARE test_Cursor CURSOR LOCAL FOR
SELECT BookKindID,BookKindName,BookKindParent FROM @temp
--插入数据值
INSERT INTO @temp VALUES ( 'a',1 )
INSERT INTO @temp VALUES ( 'b',2 )
INSERT INTO @temp VALUES ( 'c',3 )
INSERT INTO @temp VALUES ( 'd',4 )
INSERT INTO @temp VALUES ( 'e',5 )
--打开游标
OPEN test_Cursor
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM test_Cursor INTO @tempId,@tempname,@tempParent
PRINT '记录:----' + cast(@tempId as varchar(20))+',' + @tempName+','+ cast(@tempParent as varchar(20))
END
CLOSE test_Cursor
DEALLOCATE test_Cursor

sql: T-SQL 统计计算(父子關係,樹形,分級分類的統計)的更多相关文章

  1. sql 按年月日统计

    1.每年select year(ordertime) 年,sum(Total) 销售合计from 订单表group by year(ordertime) 2.每月select year(orderti ...

  2. c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程

    c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...

  3. SQL 根据日期精确计算年龄

    SQL 根据日期精确计算年龄 第一种: 一张人员信息表里有一人生日(Birthday)列,跟据这个列,算出该人员的年龄 datediff(year,birthday,getdate()) 例:birt ...

  4. sql之分段统计

    sql之分段统计 需求:获取一个县所有家庭人数在1-2人,3-4人,5-6人,6人以上的家庭数的数组 思路:通过CASE WHEN 将 CBFCYSL分组,然后统计数据条数. 语句: SELECT T ...

  5. 大数据学习day24-------spark07-----1. sortBy是Transformation算子,为什么会触发Action 2. SparkSQL 3. DataFrame的创建 4. DSL风格API语法 5 两种风格(SQL、DSL)计算workcount案例

    1. sortBy是Transformation算子,为什么会触发Action sortBy需要对数据进行全局排序,其需要用到RangePartitioner,而在创建RangePartitioner ...

  6. SQL PL/SQL语法手册

    SQL  PL/SQL语法手册 目   录 第一部分  SQL语法部分 3 一. CREATE TABLE 语句 3 二. CREATE SEQUENCE语句 5 三. CREATE VIEW语句 6 ...

  7. 服务器文档下载zip格式 SQL Server SQL分页查询 C#过滤html标签 EF 延时加载与死锁 在JS方法中返回多个值的三种方法(转载) IEnumerable,ICollection,IList接口问题 不吹不擂,你想要的Python面试都在这里了【315+道题】 基于mvc三层架构和ajax技术实现最简单的文件上传 事件管理

    服务器文档下载zip格式   刚好这次项目中遇到了这个东西,就来弄一下,挺简单的,但是前台调用的时候弄错了,浪费了大半天的时间,本人也是菜鸟一枚.开始吧.(MVC的) @using Rattan.Co ...

  8. SQL Server SQL性能优化之--通过拆分SQL提高执行效率,以及性能高低背后的原因

    复杂SQL拆分优化 拆分SQL是性能优化一种非常有效的方法之一, 具体就是将复杂的SQL按照一定的逻辑逐步分解成简单的SQL,借助临时表,最后执行一个等价的逻辑,已达到高效执行的目的 一直想写一遍通过 ...

  9. SQL Server SQL分页查询

    SQL Server SQL分页查询的几种方式 目录 0.    序言 1.    TOP…NOT IN… 2.    ROW_NUMBER() 3.    OFFSET…FETCH 4.    执行 ...

随机推荐

  1. 动态sql语句和动态传入参数个数

    1.可以将要传入的几个参数封装成一个实体类,然后将实体类作为一个参数传入到相应的方法中,这时候就需要这sqlMapper.xml文件中对传入的字段利用<if test=""& ...

  2. selenium自动加载Flash

    当我们在定位的时候,有时候会碰到Flash问题导致无法定位到元素 通过下面的代码就能解决问题 参考:https://blog.csdn.net/qq_37913997/article/details/ ...

  3. P4093 [HEOI2016/TJOI2016]序列

    题目链接 题意分析 我们假设每一个数都有一个变动范围\([L_i,R_i]\) 那么我们令\(dp[i]\)表示以\(i\)结尾的最长不下降子序列的长度 那么就是\(dp[i]=max\{dp[j]+ ...

  4. 论文阅读 | FoveaBox: Beyond Anchor-based Object Detector

    论文阅读——FoveaBox: Beyond Anchor-based Object Detector 概述 这是一篇ArXiv 2019的文章,作者提出了一种新的anchor-free的目标检测框架 ...

  5. 网络编程- 解决黏包现象方案二之struct模块(七)

    上面利用struct模块与方案一比较,减少一次发送和接收请求,因为方案一无法知道client端发送内容的长度到底有多长需要和接收OK.多一次请求防止黏包,减少网络延迟

  6. 899. Orderly Queue

    A string S of lowercase letters is given.  Then, we may make any number of moves. In each move, we c ...

  7. 批处理 进行svn代码拉取,vs编译,dotfuscator混淆

    Dotfuscator的使用:https://www.cnblogs.com/aitong/p/10684004.html 从拉取代码,编译到最后的混淆步骤很多.这时就可以使用批处理来进行自动化. 用 ...

  8. Oracle知识转储

    https://blog.csdn.net/u011479200/article/details/53086411 https://www.cnblogs.com/LiYi-Dao/p/9406189 ...

  9. Linux下与Windows下开发软件

    Linux下开发程序可以完全发挥自己的聪明才智,因为系统内核是完全开放的.Windows下开发程序就稍微郁闷一点,不论何种语言都必须在调用系统API的基础上开发,因为系统内核是不开放的. 这两种系统正 ...

  10. Rsa2验签报错【java.security.SignatureException: Signature length not correct】的解决办法

    在进行RSA2进行验签的时候,报了以下错误: java.security.SignatureException: Signature length not correct: got 344 but w ...