У меня есть таблица MySQL InnoDB выложил вот так: идентификатор (INT), run_id (INT), ELEMENT_NAME (VARCHAR), значение (текст), line_order, column_orderMySQL Значение столбца Pivot
`MyDB`.`MyTable` (
`id` bigint(20) NOT NULL,
`run_id` int(11) NOT NULL,
`element_name` varchar(255) NOT NULL,
`value` text,
`line_order` int(11) default NULL,
`column_order` int(11) default NULL
Это используется для хранения данных, сгенерированных программой Java, которая использовалась для вывода этого в формате CSV, и, следовательно, для строки_порядка и column_order. Допустим, у меня есть 4 записей (согласно описанию таблицы):
1,1,'ELEMENT 1','A',0,0
2,1,'ELEMENT 2','B',0,1
3,1,'ELEMENT 1','C',1,0
4,1,'ELEMENT 2','D',1,1
Я хочу, чтобы повернуть эти данные в представлении для отчетности, так что она будет выглядеть больше как CSV будет, где выход будет выглядеть это:
---------------------
|ELEMENT 1|ELEMENT 2| <--- Element Name
---------------------
| A | B | <--- Value From line_order = 0
---------------------
| C | D | <--- Value From line_order = 1
---------------------
Данные, поступающие очень динамично; он может быть в любом порядке, может быть любым из более чем 900 различных элементов, а значение может быть любым. Идентификатор Run связывает их все вместе, и порядок строк и столбцов в основном позволяет мне узнать, где пользователь хочет вернуть данные в порядке. Я хочу, чтобы он сортировал/группировал строки и порядок столбцов в отображаемой матрице.
Андомар, спасибо вам за помощь, но часть проблемы заключается в том, что я не знаю, сколько строк будет. Иногда line_order достигает примерно 100, он может достигать 10 000 – ashurexm
@manyxcxi: похоже, что вы хотите развернуть произвольное количество столбцов. Не думайте, что есть реальный способ сделать это в MySQL – Andomar
Что делать, если я знаю имена элементов, которые я хочу, но не знаю количество строк? Таким образом, количество столбцов будет предварительно задано в запросе ... IE ищет поворот на element_name IN ('ELEMENT1', 'ELEMENT2', 'ELEMENT3') – ashurexm