sou novo no mysql
Antes que eu tenha uma pergunta e tenha a resposta de alguém. Mas preciso melhorar novamente a partir da consulta.
Estes são meus dados de amostragem no mysql db
teste de mesa
Com esta consulta abaixo da minha pergunta anterior, obtive o resultado que eu queria.
select item, no_po, sum(qty) qty_total,
sum(case when child_customer='ha' then qty else 0 end) as customer_b_ha,
sum(case when child_customer='hi' then qty else 0 end) as customer_b_hi,
sum(case when child_customer='hu' then qty else 0 end) as customer_b_hu,
sum(case when child_customer='he' then qty else 0 end) as customer_b_he,
sum(case when child_customer='ho' then qty else 0 end) as customer_b_ho from test where received_date='2018-06-27' group by item, no_po order by item asc
e este é o resultado que eu queria.
Minha pergunta é: Como usar dinamicamente uma única linha apenas com a chave de parâmetro variável child_customer (ha, hi, hu, he, ho) repetidamente até "ho" da consulta abaixo.
sum(case when child_customer='ha' then qty else 0 end) as customer_b_ha,
sum(case when child_customer='hi' then qty else 0 end) as customer_b_hi,
sum(case when child_customer='hu' then qty else 0 end) as customer_b_hu,
sum(case when child_customer='he' then qty else 0 end) as customer_b_he,
sum(case when child_customer='ho' then qty else 0 end) as customer_b_ho
nota: Antes, The Key ("ha","hi",."hu","he","ho") eu obtive de (SELECT distinct(child_customer) de test where receive_date='2018-06-07' )
Obrigada,
Os meus cumprimentos
Se eu entendi sua solicitação, você gostaria de um número diferente de colunas, dependendo do número de valores distintos de child_customer. Isso é conhecido como pivoting e a resposta curta é que você não pode no MySQL. Uma opção é fazer um loop sobre child_customer distinto e gerar uma consulta que você possa executar. Você pode fazer isso em um procedimento armazenado ou no idioma do host.
No entanto, sugiro uma consulta como:
e faça o pivotamento em sua aplicação.