2017-11-06 2 views
0

ich eine Tabelle mit LOGID, skilllevel haben, logskill wo Daten wieEntpivotisierung SQL-Tabelle

ist
logid, skilllevel1, skilllevel2,skilllevel3,logonskill1,logonskill2,logonskill3, 

101,  90,   40,   60   1   2   3 

102,  30,   20,   10   4   5   6 

möchte ich es wie die angeordnet bekommen folgende:

logid, skilllevel, logonskill , skillposition 

101,  90,   1   1 

101,  40,   2   2 

102,  30,   4   1 

skilllevel1 als so logonskill1 entspricht auf skillposition ist der Teilstring von logonskill

Wie kann ich das erreichen?

Antwort

2

Meine bevorzugte Methode ist eine seitliche verbinden, mit apply:

select v.* 
from t cross apply 
    (values (logid, skilllevel1, logonskill1, 1), 
      (logid, skilllevel2, logonskill2, 2), 
      (logid, skilllevel3, logonskill3, 3) 
    ) v(logid, skilllevel, logonskill, skillposition) 
where skilllevel is not null or logonskill is not null; 

Lateral schließt sich sehr mächtig sind. Dies ist nur eines oder viele Dinge, die Sie mit apply tun können.

+0

danke für die Antwort. Ich habe viele Werte in der Tabelle .. wie geht das? –

+0

@ VarunK. . . Sie würden zusätzliche Zeilen für die zusätzlichen Spalten hinzufügen. Beachten Sie, dass Sie nur die Frage beantworten können, die Sie gestellt haben. Wenn Sie eine andere Frage haben, sollten Sie sie als Frage stellen. –