---------------------------------------------------------------- -- Author :DBA_HuangZJ(發糞塗牆) -- Date :2014-07-24 16:33:14 -- Version: -- Microsoft SQL Server 2012 - 11.0.5058.0 (X64) -- May 14 2014 18:34:29 -- Copyright (c) Microsoft Corporation -- Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor) -- ---------------------------------------------------------------- --> 测试数据:[huang] if object_id('[huang]') is not null drop table [huang] go create table [huang]([员工号] int,[姓名] varchar(1),[岗位] varchar(6),[上级员工号] int) insert [huang] select 1,'a','程序猿',6 union all select 2,'b','测试猿',7 union all select 3,'c','程序猿',6 union all select 4,'d','测试猿',7 union all select 5,'e','程序猿',6 union all select 6,'f','经理',null union all select 7,'g','经理',null --------------开始查询-------------------------- SELECT CASE WHEN id<>1 THEN '' ELSE CAST([上级员工号] AS VARCHAR) END [上级员工号], CASE WHEN id<>1 THEN '' ELSE CAST([上级姓名] AS VARCHAR) END [上级姓名], CASE WHEN id<>1 THEN '' ELSE CAST([上级岗位] AS VARCHAR) END [上级岗位], [员工号],[姓名],[岗位] FROM ( SELECT a.[员工号] as [上级员工号] ,a.[姓名][上级姓名],a.[岗位] AS [上级岗位],b.[员工号] ,b.[姓名],b.[岗位],ROW_NUMBER()OVER(PARTITION BY a.[员工号] ORDER BY b.[员工号])id FROM (SELECT [员工号],[姓名],[岗位] FROM huang WHERE [上级员工号] IS NULL )a LEFT JOIN ( SELECT [员工号],[姓名],[岗位],[上级员工号] FROM huang WHERE [上级员工号] IS NOT NULL )b ON a.[员工号]=b.[上级员工号])a ----------------结果---------------------------- /* 上级员工号 上级姓名 上级岗位 员工号 姓名 岗位 ------------------------------ ------------------------------ ------------------------------ ----------- ---- ------ 6 f 经理 1 a 程序猿 3 c 程序猿 5 e 程序猿 7 g 经理 2 b 测试猿 4 d 测试猿 */
-- Author :DBA_HuangZJ(發糞塗牆)
-- Date :2014-07-24 16:33:14
-- Version:
-- Microsoft SQL Server 2012 - 11.0.5058.0 (X64)
-- May 14 2014 18:34:29
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)
--
----------------------------------------------------------------
--> 测试数据:[huang]
if object_id('[huang]') is not null drop table [huang]
go
create table [huang]([员工号] int,[姓名] varchar(1),[岗位] varchar(6),[上级员工号] int)
insert [huang]
select 1,'a','程序猿',6 union all
select 2,'b','测试猿',7 union all
select 3,'c','程序猿',6 union all
select 4,'d','测试猿',7 union all
select 5,'e','程序猿',6 union all
select 6,'f','经理',null union all
select 7,'g','经理',null
--------------开始查询--------------------------
SELECT CASE WHEN id<>1 THEN '' ELSE CAST([上级员工号] AS VARCHAR) END [上级员工号],
CASE WHEN id<>1 THEN '' ELSE CAST([上级姓名] AS VARCHAR) END [上级姓名],
CASE WHEN id<>1 THEN '' ELSE CAST([上级岗位] AS VARCHAR) END [上级岗位],
[员工号],[姓名],[岗位]
FROM (
SELECT a.[员工号] as [上级员工号] ,a.[姓名][上级姓名],a.[岗位] AS [上级岗位],b.[员工号] ,b.[姓名],b.[岗位],ROW_NUMBER()OVER(PARTITION BY a.[员工号] ORDER BY b.[员工号])id
FROM
(SELECT [员工号],[姓名],[岗位]
FROM huang
WHERE [上级员工号] IS NULL )a LEFT JOIN (
SELECT [员工号],[姓名],[岗位],[上级员工号]
FROM huang
WHERE [上级员工号] IS NOT NULL )b ON a.[员工号]=b.[上级员工号])a
----------------结果----------------------------
/*
上级员工号 上级姓名 上级岗位 员工号 姓名 岗位
------------------------------ ------------------------------ ------------------------------ ----------- ---- ------
6 f 经理 1 a 程序猿
3 c 程序猿
5 e 程序猿
7 g 经理 2 b 测试猿
4 d 测试猿
*/