2017-03-06 4 views
-1

Ich muss eine Abfrage Ausgabe in einer horizontalen Art und Weise anzeigen. Ich habe einige BeispieldatenSQL Query zum Anzeigen der Ausgabe horizontal

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 

Dies erhält die Ausgabe in einer vertikalen Ansicht.

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

Allerdings muss ich es horizontal anzeigen.

ID 1 2  3  4 
Name John Mckensy Valneech Zeebra 
+0

Sie wollen dies in SQL Management Studio oder in ui Ihrer Anwendung angezeigt werden? –

+0

Sie möchten eine PIVOT-Abfrage? Sehen Sie, ob das hilft: https://technet.microsoft.com/fi-fi/library/ms177410(v=sql.105).aspx – Sami

Antwort

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; 

Ausgang

1   2  3    4 
John Mckensy Valneech Zeebra 
0

Sie können wie unten verwenden auch etwas dynamische SQL-Abfrage.

Abfrage

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);