2016-08-30 3 views
0

Können Sie mir helfen, eine Abfrage erstellen, die die erste Tabelle (links) in die zweite Tabelle (rechts) konvertieren wird. Ich muss die Produktcodes in der Bestellung konsolidieren.MySQL Abfrage zur Konsolidierung Tabelle

PO Tabelle:

enter image description here

+0

Können Sie zeigen, was Sie bisher versucht haben? –

+0

Kannst du mir einen Dump deines Tisches mit wenigen Aufnahmen geben, dann kann ich dir eine komplette Abfrage geben! –

+0

@MohamedNizar Hier ist meine Dump-Abfrage. https://www.dropbox.com/s/9wbepkmm3s5hwpp/PO%20Table.sql?dl=0 –

Antwort

0

Hier ist die Abfrage

SET @sql = NULL; 
SELECT 
GROUP_CONCAT(DISTINCT 
CONCAT(
    'count(case when PONumber = ''', 
    PONumber, 
    ''' then 1 end) AS ', 
    replace(PONumber, ' ', '') 
) 
) INTO @sql 
from PO; 

SET @sql = CONCAT('SELECT pt.ProductCode, ', @sql, ' from PO pt 
group by ProductCode'); 

PREPARE stmt FROM @sql; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 
+0

Vielen Dank für Ihre Antwort. Aber diese Abfrage hat nicht das Ergebnis, das ich brauchte. –

+0

Ich erwarte einige Änderungen auf.Wenn Sie Beispieldaten geben können, spart Zeit! –

0

In mysql es Mangel o Funktionen Fenster ist das hier das Beste, was sein wird.

Aber für Ihr spezielles Problem wird dies das Problem lösen.

SELECT 
    product_code, 
    (SELECT count from your_table t2 
     Join t1 on t2.product_code = t1.product_code and t2.po_number = 'PO1') as PO1, 
    (SELECT count from your_table t3 
     Join t1 on t3.product_code = t1.product_code and t3.po_number = 'PO2') as PO2, 
    (SELECT count from your_table t4 
     Join t1 on t4.product_code = t1.product_code and t5.po_number = 'PO3') as PO3 
From your_table t1 

Verwenden Sie einfach Ihre Tabellennamen und Spaltennamen. Leider, wenn Sie po4 hinzufügen, müssen Sie es der Abfrage hinzufügen. Wenn Sie zum Beispiel Postgres verwenden würden - Sie hätten dieses Problem nicht.