mysql实现数据转置

benpao002 2019-02-14 10:18:53
data_source id_cnt poi_code_cnt country_cnt country_id_cnt province_cnt
J 16541587 16541528 16541587 16541587 14744184
G 38621791 38621791 38621791 38621791 38621791
G_T 38621791 38621791 38621791 38621791 38621791
T_T 55163378 55163378 55163378 55163378 55163378
J_T 16541587 16541587 16541587 16541587 16541587


filed_name J G G_T T_T J_T
id_cnt 16541587 38621791 38621791 55163378 16541587
poi_code_cnt 16541528 38621791 38621791 55163378 16541587
country_cnt 16541587 38621791 38621791 55163378 16541587
country_id_cnt 16541587 38621791 38621791 55163378 16541587
province_cnt 14744184 38621791 38621791 55163378 16541587


想把上面的数据通过mysql转置为下面这样,mysql怎么写呢
...全文
469 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
benpao002 2019-02-19
  • 打赏
  • 举报
回复
怎么用高级语言呢,得在hive里实现
老马历写记 2019-02-18
  • 打赏
  • 举报
回复
同2楼,高级语言写吧
crynono 2019-02-17
  • 打赏
  • 举报
回复
用高级语言来写吧,sql语句写起来麻烦,就算写了效率也很低
西红柿ki 2019-02-15
  • 打赏
  • 举报
回复

SELECT 'id_cnt' AS filed_name,
MAX(CASE data_source WHEN 'J' THEN id_cnt END) AS J,
MAX(CASE data_source WHEN 'G' THEN id_cnt END) AS G,
MAX(CASE data_source WHEN 'G_T' THEN id_cnt END) AS G_T,
MAX(CASE data_source WHEN 'T_T' THEN id_cnt END) AS T_T,
MAX(CASE data_source WHEN 'J_T' THEN id_cnt END) AS J_T
FROM TEST1
UNION
SELECT 'poi_code_cnt' AS filed_name,
MAX(CASE data_source WHEN 'J' THEN poi_code_cnt END) AS J,
MAX(CASE data_source WHEN 'G' THEN poi_code_cnt END) AS G,
MAX(CASE data_source WHEN 'G_T' THEN poi_code_cnt END) AS G_T,
MAX(CASE data_source WHEN 'T_T' THEN poi_code_cnt END) AS T_T,
MAX(CASE data_source WHEN 'J_T' THEN poi_code_cnt END) AS J_T
FROM TEST1
UNION
SELECT 'country_cnt' AS filed_name,
MAX(CASE data_source WHEN 'J' THEN country_cnt END) AS J,
MAX(CASE data_source WHEN 'G' THEN country_cnt END) AS G,
MAX(CASE data_source WHEN 'G_T' THEN country_cnt END) AS G_T,
MAX(CASE data_source WHEN 'T_T' THEN country_cnt END) AS T_T,
MAX(CASE data_source WHEN 'J_T' THEN country_cnt END) AS J_T
FROM TEST1
UNION
SELECT 'country_id_cnt' AS filed_name,
MAX(CASE data_source WHEN 'J' THEN country_id_cnt END) AS J,
MAX(CASE data_source WHEN 'G' THEN country_id_cnt END) AS G,
MAX(CASE data_source WHEN 'G_T' THEN country_id_cnt END) AS G_T,
MAX(CASE data_source WHEN 'T_T' THEN country_id_cnt END) AS T_T,
MAX(CASE data_source WHEN 'J_T' THEN country_id_cnt END) AS J_T
FROM TEST1
UNION
SELECT 'province_cnt' AS filed_name,
MAX(CASE data_source WHEN 'J' THEN province_cnt END) AS J,
MAX(CASE data_source WHEN 'G' THEN province_cnt END) AS G,
MAX(CASE data_source WHEN 'G_T' THEN province_cnt END) AS G_T,
MAX(CASE data_source WHEN 'T_T' THEN province_cnt END) AS T_T,
MAX(CASE data_source WHEN 'J_T' THEN province_cnt END) AS J_T
FROM TEST1;

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧