sql >> データベース >  >> RDS >> Mysql

MySQL、フィールドを区切る複数の行

    :)

    によるグループが欠落しているだけです。
    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
    

    編集:

    しばらく遊んだ後、私はあなたが探している最初の解決策を得たと思います。試してみてください:)

    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
    

    次の表の場合:

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

    データは次のようになります:

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

    そして最後にこれに:

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



    1. 各グループの上位3つの値を選択します

    2. Oracle®SQL*Loaderを使用したSQLServerデータの挿入

    3. 警告:mysql_fetch_array():指定された引数は有効なMySQL結果リソースではありません

    4. データベース設計におけるn:mおよび1:nの意味