当前位置: 代码迷 >> SQL >> 请高人指教怎么用sql语句拆分列
  详细解决方案

请高人指教怎么用sql语句拆分列

热度:6   发布时间:2016-05-05 12:40:18.0
请高人指教如何用sql语句拆分列
数据库版本:Sybase Adaptive Server Anywhere Database Engine Version 8.0.2.4122

数据表名称:A
数据表内容:
code dfy zje
——————————————
100235 201202 5.0000
100236 201202 15.0000
100237 201202 100.0000
100238 201202 4009.0000
100239 201202 10002.0000

本人菜鸟,我想用sql语句select 某条记录时将‘zje’列拆成多列(zje的字符长度不定,小数点前最多5位。以上需要用sql语句实现,不在程序中实现。),比如查找code=100235,那么想得到的结果是100235,201202,5,.,0,0,0,0
比如查找code=100239,那么想得到的结果是100239,201202,1, 0,0,0,2,.,0,0,0,0

求解。。。。
------解决方案--------------------
貌似只能写存储过程来实现。
------解决方案--------------------
生成辅助表,字段ID,内容1-100000,与工作表连接 ,拆分字符串后,再用变量累加的方法
得到结果
------解决方案--------------------
//若小数点后都是四位
SELECT code+','+
       dfy+','+
       substring(zje,1,1)+','+
      substring(zje,2,1)+','+
      substring(zje,3,1)+','+
      substring(zje,4,1)+','+
      substring(zje,5,1)+','+
      substring(zje,6,1)+','
FROM A
WHERE LENGTH(CONVERT(VARCHAR(10),zje))=6
union
SELECT code+','+
       dfy+','+
       substring(zje,1,1)+','+
      substring(zje,2,1)+','+
      substring(zje,3,1)+','+
      substring(zje,4,1)+','+
      substring(zje,5,1)+','+
      substring(zje,6,1)+','+
      substring(zje,7,1)
FROM DBA.hr_leave_record
WHERE LENGTH(CONVERT(VARCHAR(10),zje))=7
union
......
根据需要写成,就这个思路
  相关解决方案