字符怎么合并
时间:2011-12-21
来源:互联网
SQL code
姓名有自己的唯一值。(档案唯一值)
主要是那个 备注 搞不定!
CREATE PROC [dbo].[人事变动周报表存储1] (@公司编号 NVARCHAR(20) ,@部门编号 NVARCHAR(20) ,@姓名 NVARCHAR(10) ,@开始日期 datetime ,@结束日期 datetime ) AS BEGIN CREATE TABLE #temp (公司编号 NVARCHAR(20) ,公司名称 NVARCHAR(30) ,部门编号 NVARCHAR(20) ,部门名称 NVARCHAR(30) ,本周现总人数 int ,离职人数 int ,入职人数 int ,备注 NVARCHAR(MAX)) INSERT INTO #temp (公司编号,公司名称,部门编号,部门名称,本周现总人数) SELECT 公司编号,公司名称,部门编号,部门名称,COUNT(档案唯一值) AS 现总人数 FROM 员工表 WHERE 在职状态='在职' GROUP BY 公司编号,公司名称,部门编号,部门名称 INSERT INTO #temp (公司编号,公司名称,部门编号,部门名称,离职人数,备注) SELECT A.公司编号,A.公司名称,A.部门编号,A.部门名称,COUNT(A.档案唯一值) AS 离职人数,('离职:'+@姓名) AS 备注 FROM 员工表 A JOIN 入职登记表头 B ON A.档案唯一值=B.档案唯一值 WHERE 在职状态='离职' AND 离职日期 BETWEEN @开始日期 AND @结束日期 GROUP BY A.公司编号,A.公司名称,A.部门编号,A.部门名称 INSERT INTO #temp (公司编号,公司名称,部门编号,部门名称,入职人数,备注) SELECT A.公司编号,A.公司名称,A.部门编号,A.部门名称,COUNT(A.档案唯一值) AS 入职人数,('入职:'+@姓名) AS 备注 FROM 员工表 A JOIN 入职登记表头 B ON A.档案唯一值=B.档案唯一值 WHERE 在职状态='在职' AND 入职日期 BETWEEN @开始日期 AND @结束日期 GROUP BY A.公司编号,A.公司名称,A.部门编号,A.部门名称 SELECT 公司编号,公司名称,部门编号,部门名称, SUM(现总人数) AS 本周现总人数, SUM(离职人数) AS 离职人数, SUM(入职人数) AS 入职人数, MAX(备注) FROM #temp WHERE dbo.LikeValue(公司编号,@公司编号)=1 AND dbo.LikeValue(部门编号,@部门编号)=1 GROUP BY 公司编号,公司名称,部门编号,部门名称 END DROP TABLE #temp /例如: ----------想要的结果----------- 公司编号 公司名称 部门编号 部门名称 现总人数 离职人数 入职人数 备注 01 XXX 001 总经办 10 1 1 入职:XXX , 离职:XXX /
姓名有自己的唯一值。(档案唯一值)
主要是那个 备注 搞不定!
作者: lailai410 发布时间: 2011-12-21
合并列值 等小小来解决。
作者: fredrickhu 发布时间: 2011-12-21

作者: lailai410 发布时间: 2011-12-21
SQL code
--我这没环境,你自己试试 CREATE PROC [dbo].[人事变动周报表存储1] (@公司编号 NVARCHAR(20) ,@部门编号 NVARCHAR(20) ,@姓名 NVARCHAR(10) ,@开始日期 datetime ,@结束日期 datetime ) AS BEGIN CREATE TABLE #temp (公司编号 NVARCHAR(20) ,公司名称 NVARCHAR(30) ,部门编号 NVARCHAR(20) ,部门名称 NVARCHAR(30) ,本周现总人数 int ,离职人数 int ,入职人数 int ,备注 NVARCHAR(MAX)) INSERT INTO #temp (公司编号,公司名称,部门编号,部门名称,本周现总人数) SELECT 公司编号,公司名称,部门编号,部门名称,COUNT(档案唯一值) AS 现总人数 FROM 员工表 WHERE 在职状态='在职' GROUP BY 公司编号,公司名称,部门编号,部门名称 INSERT INTO #temp (公司编号,公司名称,部门编号,部门名称,离职人数,备注) SELECT A.公司编号,A.公司名称,A.部门编号,A.部门名称,COUNT(A.档案唯一值) AS 离职人数,('离职:'+@姓名) AS 备注 FROM 员工表 A JOIN 入职登记表头 B ON A.档案唯一值=B.档案唯一值 WHERE 在职状态='离职' AND 离职日期 BETWEEN @开始日期 AND @结束日期 GROUP BY A.公司编号,A.公司名称,A.部门编号,A.部门名称 INSERT INTO #temp (公司编号,公司名称,部门编号,部门名称,入职人数,备注) SELECT A.公司编号,A.公司名称,A.部门编号,A.部门名称,COUNT(A.档案唯一值) AS 入职人数,('入职:'+@姓名) AS 备注 FROM 员工表 A JOIN 入职登记表头 B ON A.档案唯一值=B.档案唯一值 WHERE 在职状态='在职' AND 入职日期 BETWEEN @开始日期 AND @结束日期 GROUP BY A.公司编号,A.公司名称,A.部门编号,A.部门名称 SELECT 公司编号,公司名称,部门编号,部门名称, SUM(现总人数) AS 本周现总人数, SUM(离职人数) AS 离职人数, SUM(入职人数) AS 入职人数, STUFF((SELECT ','+[备注] FROM #TEMP T2 WHERE T2.[公司编号]=T1.公司编号 FOR XML PATH('') ),1,1,'') FROM #temp T1 WHERE dbo.LikeValue(公司编号,@公司编号)=1 AND dbo.LikeValue(部门编号,@部门编号)=1 GROUP BY 公司编号,公司名称,部门编号,部门名称 END DROP TABLE #temp
作者: kuqideyupian 发布时间: 2011-12-21
不会,来站脚助威,围观学习
作者: TravyLee 发布时间: 2011-12-21
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28