sql >> Database teknologi >  >> RDS >> Mysql

MySQL, flere rækker for at adskille felter

Du mangler lige en gruppe af :)

SELECT PartNumber,
  MAX(IF (Priority = 0, SupName, NULL)) AS Sup1,
  MAX(IF (Priority = 1, SupName, NULL)) AS Sup2,
  MAX(IF (Priority = 2, SupName, NULL)) AS Sup3
FROM SupXref
GROUP BY PartNumber
 

Rediger:

Efter at have spillet et stykke tid tror jeg, at jeg fik den første løsning, du leder efter. Prøv det :)

SELECT partnumber,
  COALESCE(Sup1, COALESCE(Sup2, Sup3)) AS Supp1,
  IF (Sup1 IS NULL, IF (Sup2 IS NULL, NULL, Sup3), COALESCE(Sup2, Sup3)) AS Supp2,
  IF (Sup1 IS NULL, NULL, IF (Sup2 IS NULL, NULL, Sup3)) AS Supp3
FROM (
  SELECT PartNumber,
    MAX(IF (Priority = 0, SupName, NULL)) AS Sup1,
    MAX(IF (Priority = 1, SupName, NULL)) AS Sup2,
    MAX(IF (Priority = 2, SupName, NULL)) AS Sup3
  FROM SupXref
  GROUP BY PartNumber
) AS S
 

For følgende tabel:

+------------+----------+---------+ | PARTNUMBER | PRIORITY | SUPNAME | +------------+----------+---------+ | a1 | 2 | Three | | a2 | 1 | Two | | a3 | 2 | Three | | a3 | 1 | Two | | a4 | 0 | One | | a5 | 0 | One | | a5 | 2 | Three | | a6 | 0 | One | | a6 | 1 | Two | | a7 | 0 | One | | a7 | 1 | Two | | a7 | 2 | Three | +------------+----------+---------+

Data bliver til dette:

+------------+------+------+-------+ | PARTNUMBER | SUP1 | SUP2 | SUP3 | +------------+------+------+-------+ | a1 | | | Three | | a2 | | Two | | | a3 | | Two | Three | | a4 | One | | | | a5 | One | | Three | | a6 | One | Two | | | a7 | One | Two | Three | +------------+------+------+-------+

Og til sidst ind i dette:

+------------+-------+-------+-------+ | PARTNUMBER | SUPP1 | SUPP2 | SUPP3 | +------------+-------+-------+-------+ | a1 | Three | | | | a2 | Two | | | | a3 | Two | Three | | | a4 | One | | | | a5 | One | Three | | | a6 | One | Two | | | a7 | One | Two | Three | +------------+-------+-------+-------+


  1. mysql gruppering efter uge

  2. MySQL-fejl #1071 - Den angivne nøgle var for lang; max nøglelængde er 767 bytes

  3. Gå tilbage fra SQL-forespørgsel til applikationskode?

  4. mysql tinyint(1) vs tinyint(2) vs tinyint(3) vs tinyint(4)