Mysql 将“选择结果”中的行转换为列

Mysql 将“选择结果”中的行转换为列,mysql,Mysql,我有五张桌子tb1、tb2、tb3、tb4和tb5 这是select查询 SELECT c.code_chantier, f.lib_famille, SUM(a.pamp_art * l.qte_ligne) AS Total FROM tb1 c JOIN tb2 b ON (c.id_chantier = b.chantier_id_chantier) JOIN tb3 l ON (b.id_brc = l.bon_rec

我有五张桌子tb1、tb2、tb3、tb4和tb5

这是select查询

SELECT c.code_chantier, f.lib_famille, SUM(a.pamp_art * l.qte_ligne) AS Total 
        FROM tb1 c

            JOIN tb2 b ON (c.id_chantier = b.chantier_id_chantier)
            JOIN tb3 l ON (b.id_brc = l.bon_reception_id_reception)
            JOIN tb4 a ON (l.article_id_article = a.id_article)
            JOIN tb5 f ON(a.famille_id_famille = f.id_famille) 
            AND b.type_brc = 2 

            GROUP BY c.code_chantier, f.lib_famille
            ORDER BY Total DESC
这是select查询的结果

    +---------------+------------------+--------------------+
| code_chantier | lib_famille      | Total              |
+---------------+------------------+--------------------+
| SC-16-23      | TRAVAUX SPECIAUX |            42600.5 |
| SC-16-15      | TRAVAUX SPECIAUX |            42006.5 |
| AJ-16-01      | PEINTURE         | 25018.779836090427 |
| MN-16-03      | PEINTURE         | 22441.573751561686 |
| AJ-16-01      | TRAVAUX SPECIAUX |          8604.6135 |
| SC-16-26      | TRAVAUX SPECIAUX |  7660.799999999999 |
| MN-16-04      | PEINTURE         |  6223.201931872805 |
| RA-16-12      | PEINTURE         |  6118.147946090509 |
| AM-16-01      | TRAVAUX SPECIAUX |  6021.484556962026 |
| CB-16-02      | TRAVAUX SPECIAUX |  5509.265642857144 |

我只想在两列
TRAVAUX specialux
PEINTURE
中显示出现的
lib_famille
。例如,结果表的标题包含
|code_chantier | TRAVAUX | specialuxpeintre | Total |
您只需选择
lib_famille=“TRAVAUX specialux”
就可以得到一个带有布尔值的列,告诉您这是否是该列的值。可以说,这不是sql查询中应该做的事情,而是脚本本身。这只会导致您在决定向该列添加另一个值时必须在两个位置进行更改

SELECT c.code_chantier, f.lib_famille="TRAVAUX SPECIAUX" AS "TRAVAUX SPECIAUX", f.lib_famille="PEINTURE" AS "PEINTURE", SUM(a.pamp_art * l.qte_ligne) AS Total