1

この人とまったく同じ質問がありますが、SQL Server ではなく MySQL についてです。グループ解除は MySQL で実行できますか? 残念ながら、MySQL には「アンピボット」機能がありません。これが私が必要とするものの例です:

生データ:

----------------------------------
owner id |   name    | occurances
----------------------------------
1        |   red     | 4
1        |   yellow  | 2
1        |   green   | 3
----------------------------------

出力するクエリ:

---------------
id |   name
---------------
1  |   red
1  |   red
1  |   red
1  |   red
1  |   yellow
1  |   yellow
1  |   green
1  |   green
1  |   green
---------------
4

1 に答える 1

0

これには一連の数字が必要です。1 つの方法を次に示します。

 select id, name
 from t join
       (select d1.d + 10 * d2.d + 100*d3.d as num
        from (select 1 as d union all select 2 union all select 3 union all
              select 4 union all select 5 union all select 6
              select 7 union all select 8 unin all select 9 union all select 0
             ) d1 cross join
              (select 1 as d union all select 2 union all select 3 union all
              select 4 union all select 5 union all select 6
              select 7 union all select 8 unin all select 9 union all select 0
             ) d2 cross join
              (select 1 as d union all select 2 union all select 3 union all
              select 4 union all select 5 union all select 6
              select 7 union all select 8 unin all select 9 union all select 0
             ) d3
        ) n
        where n.num between 1 and occurrences

これは 999 までの数値に有効です。

于 2013-03-04T15:06:17.160 に答える