1

我和这个人有同样的问题,但对于 MySQL 而不是 SQL Server。可以用 MySQL 完成取消分组吗?不幸的是,MySQL 没有“Unpivot”功能。这是我需要的一个例子:

原始数据:

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

为此,您需要一组数字。这是一种方法:

 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 回答