You need to enable JavaScript to run this app. SQL表转换:使用SELECT中IF语句拆分列内文本为独立行的实现方案
优惠活动
大模型
产品
解决方案
定价
更多

SQL表转换:使用SELECT中IF语句拆分列内文本为独立行的实现方案

宽表结构工作日日历转长表格式实现方案

存储现状

当前使用的是宽格式的美国节假日工作日标识表,存储规则如下:

  • 每一行对应一个自然年份
  • Year 字段存储年份值
  • Mon1 到 Mon12 字段分别对应1-12月,每个字段值是长度等于当月天数的连续0/1字符串,字符串内第N位的取值对应当月第N天的状态:1代表工作日,0代表非工作日

源表存储示例:

Year  Mon1              Mon2      ...      Mon12
2025  1110001110001101  0010111010110110
2024  000111011011101   0101101110110101

转换目标

需要将现有宽表转换为逐行对应单个自然日的长格式表,输出字段要求:

  • Year:对应记录所属的年份
  • Month:两位格式的所属月份(如1月统一输出为01)
  • Day:两位格式的所属日期(如当月1日统一输出为01)
  • Working day:对应日期的工作日状态,取值为0或1

目标表输出示例:

Year  Month   Day  Working day
2025  01      01   0
2025  01      02   1

参考示意图

源表示意图
目标转换格式示意图

实现说明

仅依靠SELECT语句中的IF条件判断,无法完成本次转换需要的列转行、字符串按位拆分生成独立行的操作,这类需求的核心依赖两类SQL能力落地:

  • 列转行能力:将横向排列的Mon1到Mon12共12个月份字段,整合为纵向排列的「年份、月份序号、当月0/1状态字符串」中间结果集
  • 字符串逐位拆分能力:对每个月份对应的0/1字符串,逐字符拆分为独立行——拆分出的第N个字符对应的位置,就对应当月的第N天,最后将位置值格式化为两位的日期格式,取出对应位置的0/1值作为工作日标识输出即可。

内容的提问来源于stack exchange,提问作者brandon12345

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.07 14:15:08