2016-05-06 5 views
-1

Ich habe 5 Tabellen TB1, TB2, TB3, TB4 und TB5Zeilen in Spalten von ausgewähltem Ergebnis umwandeln

Dies ist die Auswahlabfrage

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 

das Ergebnis der Auswahlabfrage Dieses

+---------------+------------------+--------------------+ 
| 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 | 

Ich möchte nur das Auftreten von lib_famille in zwei Spalten TRAVAUX SPECIAUX und PEINTURE anzeigen. Zum Beispiel enthält die Kopfzeile der Ergebnistabelle | code_chantier |TRAVAUX | SPECIAUXPEINTURE | Total |

Antwort

1

Sie können lib_famille="TRAVAUX SPECIAUX" auswählen, um eine Spalte mit Booleans zu erhalten, die Ihnen sagen, ob das der Wert dieser Spalte war. Das sollten Sie nicht in Ihrer SQL-Abfrage, sondern im Skript selbst tun. Dies wird nur dazu führen, dass Sie die Dinge an zwei Stellen ändern müssen, wenn Sie sich entscheiden, dieser Spalte einen weiteren Wert hinzuzufügen.

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