У меня есть данные в следующей гранулярности:
CityID | Name | Post_Science | Post_Science | Post_Reading | Pre_Reading | Post_Writing | Pre_Writing
123 | Bob | 2.0 | 1.0 | 2.0 | 4.0 | 1.0 | 1.0
Я буду называть эти <Post/Pre>_XXXXXX
столбцы метками.По сути, эти имена столбцов без текстовой карты «Pre» или «Post» соответствуют метке в другой таблице.
Я хочу повернуть данные таким образом, чтобы значения pre
и post
одна и та же метка находится в одной строке для каждой группы CityID, Name, Label
.Так это будет выглядеть так:
CityID | Name | Pre Category | Post Category | Label
123 | Bob | 1.0 | 2.0 | Science
123 | Bob | 4.0 | 2.0 | Reading
123 | Bob | 1.0 | 1.0 | Writing
Label
приходит из отдельной таблицы через соединение.Надеюсь, это никого не смущает.Если это так, игнорируйте этот столбец.
Так что этих категорий гораздо больше - Наука, Чтение и Письмо - вот лишь некоторые из тех, что я выбрал, например.
Я думал о двух вариантах получения данных в этом формате:
- Отключение всех данных в длинный список всех значений в группе
CityID, Name, Label
.Затем разберите имя Label и поверните обратно в значения pre и post одной категории в 1 строку - Сделайте кучу
Union
s.Поэтому выберите все науки в одном select
утверждении, все Reading
в другом утверждении и объедините их.Существует около 50 пар, поэтому 50 операторов объединения
Я представляю, что первый вариант чище, чем второй.Есть ли другие варианты?