Как перебирать результаты динамических подзапросов в моем MYSQL - PullRequest
0 голосов
/ 24 июня 2019

Мне нужно выполнить итерацию внутри подзапроса, чтобы отобразить динамические столбцы в основном запросе выбора.

Я пытался применить динамическую сводную таблицу в соответствии с этой ссылкой: Динамически создавать столбцы из строк в MySQL

Но мне нужен более понятный способ, поскольку следующий пост-пример также является подзапросом, используемым для возврата нескольких условий столбца, которые мне также нужно использовать.

Я хочу динамически выбрать tax_amount для каждого tax_id и присвоить ему имя в соответствии с его идентификатором.

select x.invoice_item_id,

       IFNULL(MAX(CASE WHEN (x.tax_id = 1) THEN x.tax_amount ELSE NULL END), NULL) AS tax_id_1,
       IFNULL(MAX(CASE WHEN (x.tax_id = 2) THEN x.tax_amount ELSE NULL END), NULL)         AS tax_id_2,
       IFNULL(MAX(CASE WHEN (x.tax_id = 3) THEN x.tax_amount ELSE NULL END), NULL)         AS tax_id_3
#   .
#   .
#   .
# for each existing tax from tax table results
from (select t.id from taxes t where t.deleted_at is null) as tax,
     invoice_items ii
       left join invoice_item_tax x on ii.id = x.invoice_item_id
where ii.deleted_at is null
  and x.deleted_at is null
group by invoice_item_id;
...