MySQL Pivot / объединить / переместить строки в столбцы на основе двух идентификаторов столбцов - PullRequest
0 голосов
/ 28 мая 2018

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

По сути, я стараюсь, чтобы каждый 'id' имел одну строку.

У каждого «идентификатора» может быть один или несколько «sqn» (которые всегда являются последовательными числами для каждого идентификатора, начинающегося с 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/#!9/09408/2/4)

Спасибо!

...