数据表结构:姓名    车型a       法拉利
a       保时捷
a       兰博基尼
b       路虎
b       大众
b       宾利
b       宝马
b       奔驰用一条SQL语句查询出如下结果:姓名  车型1    车型2    车型3      车型4    车型5
a     法拉利   保时捷   兰博基尼   
b     路虎     大众     宾利       宝马     奔驰

解决方案 »

  1.   


    create table lis
    (姓名 varchar(3), 车型 varchar(10))insert into lis
    select 'a', '法拉利' union all
    select 'a', '保时捷' union all
    select 'a', '兰博基尼' union all
    select 'b', '路虎' union all
    select 'b', '大众' union all
    select 'b', '宾利' union all
    select 'b', '宝马' union all
    select 'b', '奔驰'
    select 姓名,
    isnull([1],'') 车型1,
    isnull([2],'') 车型2,
    isnull([3],'') 车型3,
    isnull([4],'') 车型4,
    isnull([5],'') 车型5
    from
    (select 姓名,车型,
    row_number() over(partition by 姓名 order by getdate()) rn
    from lis) a
    pivot(max(车型) for rn in ([1],[2],[3],[4],[5])) b
    姓名   车型1       车型2        车型3      车型4      车型5
    ---- ---------- ---------- ---------- ---------- ----------
    a    法拉利        保时捷        兰博基尼                  
    b    路虎          大众          宾利         宝马         奔驰(2 row(s) affected)