MySQL Query - Trasnposition

0

I have the following query:

SELECT      despesa.codRequisicao,
            despesa.histDespesa,                
            despesa.despesaPassagem, despesa.despesaTaxi, despesa.despesaHotel, despesa.despesaRefeicao, despesa.despesaOutros
FROM        despesa;

Where the result displays this way:

1   hist1   0   200 0   0   0
1   hist2   0   0   600 0   0

I need the result to look like this:

1   hist1   despesaTaxi    200
1   hist2   despesaHotel   600

How do you do it?

    
asked by anonymous 22.10.2014 / 13:32

1 answer

2

You are wanting to join two columns. What you can do, is to add the two columns and display as a single, as follows:

SELECT  despesa.codRequisicao,
        despesa.histDespesa,                
        (despesa.despesaPassagem + 
         despesa.despesaTaxi + 
         despesa.despesaHotel +
         despesa.despesaRefeicao + 
         despesa.despesaOutros) AS DespesasGerais 
  FROM  despesa;

Now if you want to know what the expense was registered on the line, you can create a condition:

SELECT  despesa.codRequisicao,
        despesa.histDespesa,    
        IF(despesa.despesaPassagem > 0,'Passagem',
           IF(despesa.despesaTaxi > 0, 'DespesaTaxi',
              IF(despesa.despesaHotel > 0, 'DespesaHotel',
                 IF(despesa.despesaRefeicao > 0, 'DespesaRefeicao',
                    IF(despesa.despesaOutros > 0, 'DespesaOutros', 'Nenhuma Despesa')
                 )
              ) 
           )
        ) AS TipoDespesa,          
        (despesa.despesaPassagem + 
         despesa.despesaTaxi + 
         despesa.despesaHotel +
         despesa.despesaRefeicao + 
         despesa.despesaOutros) AS ValorDespesa 
  FROM  despesa;
    
22.10.2014 / 14:27