Ho una tabella MySQL con campi e dati come segue;MySQL, più righe per separare i campi
PartNumber Priority SupName
a1 0 One
a2 0 One
a2 1 Two
a3 0 One
a4 1 Two
a5 2 Three
Sto cercando di creare una vista in cui le parti che hanno più righe sono combinati in una singola riga, e in campi separati come
Idealmente questo;
PartNumber Sup1 Sup2 Sup3
a1 One NULL NULL
a2 One Two NULL
a3 One NULL NULL
a4 Two NULL NULL
a5 Three NULL NULL
O posso vivere con questo
PartNumber Sup1 Sup2 Sup3
a1 One NULL NULL
a2 One Two NULL
a3 One NULL NULL
a4 NULL Two NULL
a5 NULL NULL Three
Come vorrei costruire una vista o select per raggiungere questo obiettivo?
Il più vicino che ho fatto finora è;
SELECT PartNumber,
IF(Priority=0, SupName, NULL) AS Sup1,
IF(Priority=1, SupName, NULL) AS Sup2,
IF(Priority=2, SupName, NULL) AS Sup3
FROM SupXref
ORDER BY PartNumber
Questo tuttavia mi dà una riga separata per ciascuno dei campi e ho bisogno di una singola riga.
che è una tabella incrociata e starai meglio a fare quel tipo di trasformazione in y il nostro cliente. Mysql non supporta direttamente le query a campi incrociati. La logica –
è un po 'confusa. Penso che si possa fare con group_concat –
Potrebbe voler aggiungere un tag per (o semplicemente aggiungere al titolo) group-by, per renderlo più utile a chi viene a cercare :) –