对具有不同值的行进行重命名并重命名

时间:2015-01-15 16:59:06

标签: mysql sql

如何对具有不同值的组行进行分组并重命名,同时汇总其他列。

|  Dept  |  Value 1  | Value 2  |  Value 3  |

|  Car1  |  2        |  4       |  9        |

|  Car2  |  2        |  8       |  9        |

|  Car3  |  1      |  4       |  9        |

|  MC1  |  2        |  4       |  9        |

|  MC2  |  2        |  7       |  9        |

|  MC3  |  2        |  4       |  9        |

|  RV1  |  2        |  4       |  5        |

|  RV2  |  2        |  34       |  9        |

|  RV3  |  3        |  4       |  9        |
我想将car1,car2,car3组合成一行名为Car,MC1,MC2,MC3的单行名称为Motorcycle,并将RV1,RV2,RV3分成一行命名为RV。列"值1,值2和值3"总结为每个小组。

1 个答案:

答案 0 :(得分:1)

MySQL似乎没有regexp_replace()函数,可以使用的一个技巧是按CASE语句进行分组,例如:

select
  (case
    when dept like 'Car%' then 'Car'
    when dept in ('MC1', ...) then 'MC' 
    when ...
   end case) dept,
  sum(...),
  sum(...)
from ...
group by
  (case
    when dept like 'Car%' then 'Car'
    when dept in ('MC1', ...) then 'MC' 
    when ...
   end case)

我认为MySQL中group by是不必要的,与标准SQL语法不同,无论如何它在大多数其他数据库系统中都是必需的,因此最好将其用于最终的迁移目的。