Tengo una tabla MySQL con campos y datos como los siguientes;MySQL, filas múltiples para separar campos
PartNumber Priority SupName
a1 0 One
a2 0 One
a2 1 Two
a3 0 One
a4 1 Two
a5 2 Three
Estoy tratando de crear una vista en la que las partes que tienen varias filas se combinan en una sola fila, y en campos distintos, como por
Idealmente Este;
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 puedo vivir con esta
PartNumber Sup1 Sup2 Sup3
a1 One NULL NULL
a2 One Two NULL
a3 One NULL NULL
a4 NULL Two NULL
a5 NULL NULL Three
Cómo iba a construir una vista o instrucción de selección para lograr esto?
Lo más cerca que he llegado hasta ahora es;
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
Sin embargo, esto me da una fila separada para cada uno de los campos y necesito una sola línea.
eso es una tabla cruzada, y sería mejor que hicieras ese tipo de transformación en y nuestro cliente. Mysql no admite consultas cruzadas directamente. –
lógica es un poco confuso. Creo que se puede hacer con group_concat –
Puede querer agregar una etiqueta para (o simplemente anexar al título) group-by, para que esto sea más útil para aquellos que vienen buscando :) –