MySQL Pivot/ объединить / переместить строки в столбцы на основе двух идентификаторов столбцов

У меня есть сценарий, в котором я пытаюсь получить данные от длинных до широких. (с использованием MariaDB 10.2 и HeidiSQL 9.4 в Windows)

По сути, я стараюсь, чтобы у каждого идентификатора был один ряд.

У каждого 'id' может быть один или несколько 'sqn' (которые всегда являются последовательными числами для каждого ID, начинающегося с 1.) Я не всегда знаю максимальное число "sqn".

Для каждой комбинации id-sqn есть несколько столбцов, в которых значение является постоянным для каждого 'id' -подобного 'tpn'

Есть другие, которые имеют разные значения, уникальные для каждого "sqn" для каждого "id" - например, "sqft", "amnt" и "date"

Во-первых, это стартовая таблица, во-вторых, где я пытаюсь добраться до:

╔═════╦═════╦═════╦══════╦══════╦═════════╗
║ id  ║ sqn ║ tpn ║ sqft ║ amnt ║   date  ║
╠═════╬═════╬═════╬══════╬══════╬═════════╣
║  1  ║  1  ║ 821 ║  110 ║  101 ║  1/1/00 ║
║  1  ║  2  ║ 821 ║  150 ║  195 ║    NULL ║
║  2  ║  1  ║ 551 ║ NULL ║   65 ║  6/1/15 ║
║  2  ║  2  ║ 551 ║  900 ║  190 ║  1/1/01 ║
║  2  ║  3  ║ 551 ║  220 ║  110 ║  1/1/05 ║
║  3  ║  1  ║ 821 ║  900 ║   44 ║  7/1/12 ║
╚═════╩═════╩═════╩══════╩══════╩═════════╝


╔═════╦═══════╦══════╦═══════╦════════╦═══════╦═══════╦═════════╦════════
║ id  ║ sqft1 ║ tpn  ║ amnt1 ║ date1  ║ sqft2 ║ amnt2 ║  date2  ║ sqft3... 
╠═════╬═══════╬══════╬═══════╬════════╬═══════╬═══════╬═════════╬════════
║  1  ║  110  ║ 821  ║  101  ║ 1/1/00 ║  150  ║  195  ║    NULL ║  NULL
║  2  ║ NULL  ║ 551  ║   65  ║ 6/1/15 ║  900  ║  190  ║  1/1/01 ║   220
║  3  ║  900  ║ 821  ║   44  ║ 7/1/12 ║ NULL  ║ NULL  ║    NULL ║  NULL
╚═════╩═══════╩══════╩═══════╩════════╩═══════╩═══════╩═════════╩═════════

Конечно, я могу просто выполнить полное руководство, взглянув на каждый экземпляр таблицы, чтобы найти максимальное значение "sqn", а затем просто вручную переместить его в...

Но у меня есть сотни - тысячи таких таблиц, которые часто обновляются (и я не могу изменить форму получаемых данных - я могу только потреблять их, но не проектировать их во внешнем интерфейсе). Я пробовал варианты предложений сводной таблицы - но при использовании обоих "id" и "sqn" я застреваю (например, http://sqlfiddle.com/)

Спасибо!

0 ответов

Другие вопросы по тегам