У меня есть таблица StudentMarks
со столбцами Name, Maths, Science, English
. Данные похожи на
Name, Maths, Science, English
Tilak, 90, 40, 60
Raj, 30, 20, 10
Я хочу устроить это следующим образом:
Name, Subject, Marks
Tilak, Maths, 90
Tilak, Science, 40
Tilak, English, 60
С unpivot я могу правильно получить имя и метки, но не могу получить имя столбца в исходной таблице для Subject
столбца в желаемом наборе результатов.
Как я могу этого добиться?
Я до сих пор дошел до следующего запроса (чтобы получить имя, отметки)
select Name, Marks from studentmarks
Unpivot
(
Marks for details in (Maths, Science, English)
) as UnPvt
Ответы:
Ваш запрос очень близок. Вы должны иметь возможность использовать следующее, включая
subject
в окончательный список выбора:См. Демонстрацию SQL Fiddle
источник
Вы также можете попробовать стандартный метод sql un-pivoting, используя последовательность логики со следующим кодом. Следующий код состоит из 3 шагов:
удалить любые нулевые комбинации (если существует, табличного выражения можно полностью избежать, если в базовой таблице строго нет нулевых значений)
источник
ВЫБРАТЬ * ОТ студента
UNPIVOT (Оценки по предметам (математика, естественные науки, английский язык));
источник
Другой способ использования перекрестного соединения - указать имена столбцов внутри перекрестного соединения.
источник