Mam stół StudentMarks
z kolumnami Name, Maths, Science, English
. Dane są jak
Name, Maths, Science, English
Tilak, 90, 40, 60
Raj, 30, 20, 10
Chcę to ustawić w następujący sposób:
Name, Subject, Marks
Tilak, Maths, 90
Tilak, Science, 40
Tilak, English, 60
Dzięki unpivot jestem w stanie poprawnie uzyskać nazwę, znaki, ale nie jestem w stanie uzyskać nazwy kolumny w tabeli źródłowej do Subject
kolumny w żądanym zestawie wyników.
Jak mogę to osiągnąć?
Dotarłem do tej pory do następującego zapytania (aby uzyskać Imię, Znaki)
select Name, Marks from studentmarks
Unpivot
(
Marks for details in (Maths, Science, English)
) as UnPvt
Odpowiedzi:
Twoje zapytanie jest bardzo bliskie. Powinieneś być w stanie użyć następujących elementów, które znajdują się
subject
na ostatecznej liście wyboru:Zobacz SQL Fiddle z demo
źródło
Możesz również wypróbować standardową metodę sql un-pivoting, używając sekwencji logiki z następującym kodem. Poniższy kod składa się z 3 kroków:
usuń wszelkie kombinacje null (jeśli istnieją, można całkowicie uniknąć wyrażenia tabeli, jeśli w tabeli podstawowej nie ma absolutnie żadnych wartości null)
źródło
SELECT * FROM student
UNPIVOT (oceny za przedmioty z (matematyka, nauki ścisłe, angielski));
źródło
Innym sposobem użycia sprzężenia krzyżowego byłoby określenie nazw kolumn w sprzężeniu krzyżowym
źródło