1
I have two sets of tables below:
1:
2:
I created a query that brings the results of the two tables using Union
:
Select
tbprojeto.projNome As Projeto,
tbindp.indPNome As `Tipo(Ind/Idx)`,
tbindc.indcValor As Valor,
tbproj_cenario.projCenNome As Cenário,
tbidxind_grp.idxIndGrpNome As `Grupo de Ánalise`
From
tbprojeto Inner Join
tbindp On tbindp.indPProj_Id = tbprojeto.projId Inner Join
tbindc On tbindc.indcInd_Id = tbindp.indPId Inner Join
tbproj_cenario On tbproj_cenario.projCenProj_Id = tbprojeto.projId And
tbindc.indcCen_Id = tbproj_cenario.projCenId Inner Join
tbidxind_grp On tbindp.indPIdxIndGrp_Id = tbidxind_grp.idxIndGrpId
Union
Select
tbprojeto.projNome As Projeto,
tbidxp.idxPNome As `Tipo (Ind/Indx)`,
tbidxc.IdxCValor As Valor,
tbproj_cenario.projCenNome As Cenário,
tbidxind_grp.idxIndGrpNome
From
tbprojeto Inner Join
tbidxp On tbidxp.idxPProj_Id = tbprojeto.projId Inner Join
tbidxc On tbidxc.IdxCIdx_Id = tbidxp.idxPId Inner Join
tbproj_cenario On tbproj_cenario.projCenProj_Id = tbprojeto.projId And
tbidxc.IdxCProjCen_Id = tbproj_cenario.projCenId Inner Join
tbidxind_grp On tbidxp.idxPIdxIndGrp_Id = tbidxind_grp.idxIndGrpId
That is the result:
I’m trying to pivot this query specifically so that each scenario column value is a new column with Join with the Value column, the result would be something visually like this:
After a lot of work and help from the staff, I got this (below) with this code:
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'case when projCenNome = "',
projCenNome,
'" then indcValor end AS \'',
projCenNome, '\''
)
) INTO @sql
from (select projCenNome from tbproj_cenario
inner join tbindc on tbindc.indcCen_Id = tbproj_cenario.projCenId
) A;
SET @sql = CONCAT('Select tbindp.`indPNome` As Valor , ', @sql, '
From tbindc
Inner Join
tbproj_cenario On tbindc.indcCen_Id = tbproj_cenario.projCenId
Inner Join
tbindp On tbindc.indcInd_Id = tbindp.indPId');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
That is, the values of the other columns, in the case Name, are not transposed, so repeating, how could you get around this?
This afternoon I answered something similar to your doubt, of course the structure is not the same, but hopefully it helps you. Follow the link, the name of this technique is
PIVOT
, however, it is made in the macho mode, with nothing of molezinha hehehe... http://answall.com/questions/93554/returntodos-values-meses-do-ano-extraindo-por-m%C3%Aas/93702#93702– Ilario Junior