2017-10-03 2 views
-4

Bitte schauen Sie sich den Bildlink an, um mein Kritzeln in der Frage zu verstehen.angehängte Bildzeiger zum Abfragen einer Tabelle

Eine Tabelle enthält Benutzer aus verschiedenen Bundesstaaten Australiens, die mit unterschiedlichen Methoden an die Anwendung herangehen.

Diese Tabelle hat Spalte für userids [id] (1,2,3,4,5,6..14000), Spalte approaches (a, b, c, d, e, f) und Spalten states (wa, vic ..)

Jetzt brauche ich einen Tisch zu formulieren, die Spalten mit Spalte # 1 als approaches und die verbleibenden Spaltennamen mit Staaten Namen wie Western Australia, Victoria, SA, queens usw.

Der Ansatz hätte ‚a‘ Zeile würde insgesamt keine Leute haben, die diesen Ansatz in verschiedenen Staaten victoria 5 wa 0

Und auf die gleiche Weise verwendet andere 5 Ansätze hätten eine Anzahl von Leuten, die den Ansatz in verschiedenen Staaten (in Spalten) verwendeten.

(zB: Ansatz 'b' row- vic 3 wa 1 sa2 ... etc)

Hier ist der Link für das Bild einen Blick auf sie bitte haben. https://i.stack.imgur.com/DldhT.png

+5

"Hoffe, dass ich deutlich gemacht, .." - Nein, hast du nicht. –

+0

Fügen Sie die Beispieldaten und das erwartete Ergebnis im Tabellenformat –

+0

sure.Ich habe die Frage bearbeitet. – sunny

Antwort

0

können Sie eine PIVOT-Anweisung wie unten verwenden.

create table data (id int, [state] nvarchar(100), approaches nvarchar(10)); 
insert into data values 
(1,'nsw','a'), 
(2,'','b'), 
(3,'wa','c'), 
(4,'qld','d'); 

select 
    approaches, 
    [New South Wales]=[nsw], 
    [Western Australia]=[wa], 
    [Queensland]=[qld], 
    [Victoria]=[vic], 
    [South Australia]=[sa], 
    [not available] 
from 
(
    select 
     id, 
     case 
      when [state] ='' then 'not available' 
      else [state] 
     end as [state], 
     approaches 
    from data 
)src 
pivot 
(
count(id) for [state] in ([nsw],[wa],[qld],[vic],[sa],[not available]) 
)p 

see working demo

Verwandte Themen