T1分组编号   组内编码   所属省     所属市          姓名
1001           01      江苏       南京            王1
1001           02      江苏       南京            王2
1001           03      江苏       南京            王3
1002           01      江苏       常州            张1
1002           02      江苏       常州            张2
1002           03      江苏       常州            张3
1003           01      湖南       长沙            李1
1003           03      湖南       长沙            李3
.....希望查询格式如下江苏           南京
               1001
01             王1
02             王2
03             王3江苏           常州
               1002
01             张1
02             张2
03             张3湖南           长沙
               1003
01             李1
03             李3
。。不用考虑相同组编码不同省市问题

解决方案 »

  1.   

    ---测试数据---
    if object_id('[T1]') is not null drop table [T1]
    go
    create table [T1]([分组编号] int,[组内编码] varchar(2),[所属省] varchar(4),[所属市] varchar(4),[姓名] varchar(3))
    insert [T1]
    select 1001,'01','江苏','南京','王1' union all
    select 1001,'02','江苏','南京','王2' union all
    select 1001,'03','江苏','南京','王3' union all
    select 1002,'01','江苏','常州','张1' union all
    select 1002,'02','江苏','常州','张2' union all
    select 1002,'03','江苏','常州','张3' union all
    select 1003,'01','湖南','长沙','李1' union all
    select 1003,'03','湖南','长沙','李3'
     
    ---查询---
    select  所属省,所属市
    from
    (
    select distinct 1 as px,分组编号,所属省,所属市 from T1
    union all
    select distinct 2,分组编号,'',ltrim(分组编号) from T1
    union all
    select distinct 3,分组编号,组内编码,姓名 from T1
    ) t
    order by 分组编号,px
    ---结果---
    所属省  所属市          
    ---- ------------ 
    江苏   南京
         1001
    01   王1
    02   王2
    03   王3
    江苏   常州
         1002
    01   张1
    02   张2
    03   张3
    湖南   长沙
         1003
    01   李1
    03   李3(所影响的行数为 14 行)