如何将一个字段的值转换为列名

hive数据库、mysql也行如图。date_month_1这的值会变动 下一期有可能变成01-APR-30-APR-24 在下一期这个也可能其其他月份 不管变成什么月份 我这边要实现将月份标识截取出来作为quantity_month1的列名。这样12个月都有对应的字段。然后再将每一期合并在一起来组成数据。

image.png

SQL 重庆一棵草 发布于 2024-7-18 16:19 (编辑于 2024-7-18 16:24)
1min目标场景问卷 立即参与
回答问题
悬赏:15 F币 4人赏过 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
重庆一棵草Lv4中级互助
发布于2024-8-30 09:09

最终用许多个case when解决了。

最佳回答
0
CovidLv3高级互助
发布于2024-7-18 16:22

啥数据库?

最佳回答
0
很困想睡觉Lv5初级互助
发布于2024-7-18 16:54(编辑于 2024-7-18 16:54)

SUBSTR()  截取一下? 把月份截取出来 再case when 什么的转换一下

  • 重庆一棵草 重庆一棵草(提问者) 因为我取数是一批一批的取的 同一批次里面date_month1 不会变下一个批次就变了、所以得根据date_month1里面的值截取到列名。
    2024-07-18 17:03 
  • 很困想睡觉 很困想睡觉 回复 重庆一棵草(提问者) 我看你的date_month_1是数字 他有时候会变成日期序列这种格式的数据吗
    2024-07-18 17:21 
  • 重庆一棵草 重庆一棵草(提问者) 回复 很困想睡觉 这个date_month_1 是我自己case when出来的。date_month1 这个字段固定就是这个格式。01-APR-30-APR-24 里面的月会变化。
    2024-07-18 17:55 
最佳回答
0
快乐星光Lv5中级互助
发布于2024-7-19 09:49

你这个sql直接语句不好搞,用存储搞,在里面用游标来改变列名。

最佳回答
0
CD20160914Lv8专家互助
发布于2024-7-19 10:01

参考一下mysql的存储过程。。

DELIMITER // CREATE PROCEDURE dynamic_alias() BEGIN    SET @sql = CONCAT('SELECT (SELECT column1 FROM your_subquery) AS ', 'your_dynamic_name', 'ROM your_table');    PREPARE stmt FROM @sql;    EXECUTE stmt;    DEALLOCATE PREPARE stmt; END// DELIMITER ; CALL dynamic_alias();

  • 3关注人数
  • 322浏览人数
  • 最后回答于:2024-8-30 09:09
    请选择关闭问题的原因
    确定 取消
    返回顶部