| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1469 人关注过本帖
标题:分享一个EXCL左右对比查询结果表
只看楼主 加入收藏
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
结帖率:98.98%
收藏
 问题点数:0 回复次数:1 
分享一个EXCL左右对比查询结果表
if object_id('tempdb..#员工表') is not null drop table #员工表
--测试数据
create table #员工表(部门 varchar(20),姓名 varchar(20),性别 varchar(4),到职日期 datetime,年龄 int,职称 varchar(20))
declare @i int,@b varchar(20),@m varchar(20),@x varchar(4),@d datetime,@n int,@q varchar(20)
set @i=1
set @d=getdate()
set @q='文员'
set @x='男'
while @i<=21
begin
  if @i<=10 set @b='板式加工1' else set @b='板式加工2'
  set @m='张三'+right('000'+rtrim(@i),3)
  set @d=@d+1
  set @n=20+@i
  if @q='文员' set @q='职员' else set @q='文员'
  if @x='男' set @x='女' else set @x='男'
  insert into #员工表 select @b,@m,@x,@d,@n,@q
  set @i=@i+1
end
--测试数据结束
select * from #员工表

--生成报表开始
declare @左 int,@右 int
declare @左表 table(L部门 varchar(20),L姓名 varchar(20),L性别 varchar(4),L到职日期 datetime,L年龄 int,L职称 varchar(20),序号 int identity(1,1))
declare @右表 table(R部门 varchar(20),R姓名 varchar(20),R性别 varchar(4),R到职日期 datetime,R年龄 int,R职称 varchar(20),序号 int identity(1,1))

select @左=count(1) from #员工表 where 性别='男'
select @右=count(1) from #员工表 where 性别='女'

insert into @左表 select * from #员工表 where 性别='男'
insert into @右表 select * from #员工表 where 性别='女'

if @左>@右
   select L部门,L姓名,L性别,L到职日期,L年龄,L职称,R部门,R姓名,R性别,R到职日期,R年龄,R职称 from @左表 l left join @右表 r on l.序号=r.序号
else
   select L部门,L姓名,L性别,L到职日期,L年龄,L职称,R部门,R姓名,R性别,R到职日期,R年龄,R职称 from @右表 r left join @左表 l on l.序号=r.序号
2017-01-11 16:35
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:0 
测试数据
图片附件: 游客没有浏览图片的权限,请 登录注册

查询数据
s
图片附件: 游客没有浏览图片的权限,请 登录注册
2017-01-11 16:37
快速回复:分享一个EXCL左右对比查询结果表
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023005 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved