当前位置: 代码迷 >> Sql Server >> sql联合查询序号展示
  详细解决方案

sql联合查询序号展示

热度:33   发布时间:2016-04-24 09:06:05.0
sql联合查询序号显示
我有一个部门和员工的联合查询,想实现各个部门的员工序号都是从1才是,如果是部门就不显示。我这样只能查所有人的序号,并不能按部门开始。向大家请教下要怎么查
这是我给员工表上加的序号
select row_number() over (order by a.orgid,a.name) as seq,


------解决思路----------------------
--部门
select '' as seq,a.id as deptid,a.name as deptmc,'' as managermc
    from sys_organization as a 
    where a.ifbusinessdept='1'
--人员
union 
select CAST(row_number() over (PARTITION BY a.orgid order by a.orgid,a.name)AS VARCHAR) as seq,a.orgid as deptid,'' as deptmc,a.name as managermc
    from sys_user as a
    where a.usertype=5
类似这样
------解决思路----------------------
UNION 的多个结果之间字段类型、长度都要一致。
select Convert(varchar(11),'') as seq,
       a.id as deptid,
       a.name as deptmc,
       Convert(varchar(20),'') as managermc -- 类型要和 sys_user.name 一致
  from sys_organization as a 
 where a.ifbusinessdept='1'
UNION ALL -- 加了 ALL 就不需要数据库做去重复了,虽然结果一样但是效率不同。
select Convert(varchar(11),
               row_number() over (PARTITION BY a.orgid order by a.orgid,a.name)
              ) as seq,
       a.orgid as deptid,
       Convert(varchar(30),''_ as deptmc, -- 类型要和 sys_organization.name 一致
       a.name as managermc
  from sys_user as a
 where a.usertype=5
  相关解决方案