SQL 由人员汇总到部门树递归合计总数函数
2024-10-19 11:58:30
1、由人员计算出总数,在部门树(tree)按结构汇总(主父绑定)
CREATE function [dbo].[GetEmpDepNum]
(
@ID int
)
RETURNS @Tree Table (ID [int] IDENTITY (, ),PID Int,FID Int,SN Varchar(), Name Varchar(), Num Varchar())
as
begin
declare @MaxNum int,@i int,@f int,@sNnm int
Insert @Tree SELECT c1.pid,c1.fid,c1.sn,c1.Name,(SELECT COUNT(*) FROM dbo.tbEmployee c2 WHERE c2.MID = c1.pid)
AS sNum FROM tbDepList c1 order by FID desc,pid
-- select * from @TreeBcb
SELECT @MaxNum=Count(*) from @Tree
set @i=
while (@i<=@MaxNum)
begin
select @f=fid from @Tree where ID=@i
select @sNnm=SUM(CONVERT(int,num)) from @Tree where FID=(select fid from @Tree where ID=@i )
--print 's ||'+CONVERT(varchar(),@i)+'|'+CONVERT(varchar(), @sNnm)
if @sNnm>
begin
update @Tree set Num =@sNnm from @Tree where PID=@f
end
SET @i=@i+
end
--select * from @TreeBcb order by FID desc,pid
--select PID, FID,CASE Num WHEN THEN Name ELSE Name+' ('+Num+')' END as Name from @TreeBcb order by FID desc,pid Return
end GO
2、调用
select PID, FID,CASE Num WHEN THEN Name ELSE Name+' ('+Num+')' END as Name from dbo.GetEmpDepNum() order by FID ,pid
最新文章
- Linux Pthread 深入解析(转-度娘818)
- Phpstorm 设置取消自动保存
- Ionic2学习笔记(4):*号
- SQL Server 2012实施与管理实战指南(笔记)——Ch3Alwayson可用组
- 188. Best Time to Buy and Sell Stock IV
- Dom4j的使用(全而好的文章)
- Make Things Move -- Javascript html5版(三)三角函数形式的动画
- g++ 编译c文件
- NSDate常用代码范例
- mui手机图片压缩上传+C#
- 初识 Runtime
- 电梯调度算法---SCAN算法
- vue给不同环境配置不同打包命令
- Wordpress 后台更改网址
- CPU 实用工具
- SharePoint 2016: 数据库正在兼容性范围内运行,建议进行升级
- 12.C# 接口和抽象类的区别
- LOJ#2320 生成树计数
- Kriging插值法
- Ueditor Word图片转存交互
热门文章
- vRO 添加已有磁盘到VM
- Efficient Vector Representation for Documents through Corruption-by Minmin Chen阅读
- 【BZOJ2733】永无乡[HNOI2012](splay启发式合并or线段树合并)
- MapReduce-多个输出(使用MultipleOutput,不指定reduce任务个数)
- javascript的宿主环境
- mysql数据库优化课程---5、要索引和不要索引的区别是什么
- 解决:easygui.msgbox(";Hello there!";)报错:Tcl_Init error: Can&#39;t find a usable init.tcl in the following directories问题的解决
- AppCompatActivity和Activity的区别
- 安装Nodejs、npm、Less(支持生成压缩后的css)
- c++primer 第四章编程练习答案