Sql Query水平显示输出

时间:2017-03-06 12:09:44

标签: sql sql-server

我需要以水平方式显示查询输出。我有一些示例数据

create table TestTable (id number, name varchar2(10))
    insert into TestTable values (1, 'John')
    insert into TestTable values (2, 'Mckensy')
    insert into TestTable values (3, 'Valneech')
    insert into TestTable values (4, 'Zeebra')
    select * from TestTable

这会以垂直视图获取输出。

ID Name
==========
1  John
2  Mckensy
3  Valneech
4  Zeebra

但是,我需要水平显示它。

ID   1    2       3        4
Name John Mckensy Valneech Zeebra

2 个答案:

答案 0 :(得分:0)

create table #TestTable (id int, name varchar(10))

insert into #TestTable values (1, 'John')
insert into #TestTable values (2, 'Mckensy')
insert into #TestTable values (3, 'Valneech')
insert into #TestTable values (4, 'Zeebra')


select *
from 
(
  select *
  from #TestTable
) src
pivot
(
  max(name)
  for id in ([1], [2], [3],[4])
) piv;

输出

1         2       3             4
John    Mckensy Valneech    Zeebra

答案 1 :(得分:0)

您还可以使用类似下面的动态SQL查询。

<强>查询

declare @sql as varchar(max);
select @sql = 'select ' + char(39) + 'Name' + char(39) + ' Id,' + stuff((
        select 
        ',max(case [Id] when ' + cast(id as varchar(10)) + '  then name end) ['  
       +  cast([Id] as varchar(10)) + ']'
        from TestTable
        for xml path('')
    ), 1, 1, '');

select @sql += 'from TestTable;';
exec(@sql);