SQL拆分

image.png

SQL aazhuan 发布于 2022-8-23 09:05
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
aazhuanLv5见习互助
发布于2022-8-23 16:49(编辑于 2022-8-23 16:51)

declare @t as table (

 id0 int identity(1,1),id int,qty int,cf int

)

declare @t2 as table(

 id int,qty int,cf int

)

insert into @t select *from TEST6

declare @id int  = (select (min(id0)) from @t)

declare @idmax int  =(select (max(id0)) from @t)

declare @qtyTemp as int

declare @qtycfTemp as int

while(@id<=@idmax)

begin

 select @qtyTemp  = qty,@qtycfTemp =cf  from @t where id0 = @id

 while(@qtyTemp>0)

 begin

  if(@qtyTemp>@qtycfTemp)

  begin

   insert into @t2 select id,qty,@qtycfTemp from @t where id0 = @id

   set @qtyTemp = @qtyTemp-@qtycfTemp

  end

  else

  begin

   insert into @t2 select id,qty,@qtyTemp from @t where id0 = @id

   set @qtyTemp = 0

  end

 end

 set @id=@id+1

end

最佳回答
0
yzm339714Lv6中级互助
发布于2022-8-23 09:08

拆分的依据是啥呢

  • aazhuan aazhuan(提问者) a3根据a6拆分
    2022-08-23 09:09 
  • Z4u3z1 Z4u3z1 我帮他描述一下 当A3>=A6拆分一行,然后A3-A6>=a6继续拆
    2022-08-23 09:16 
  • aazhuan aazhuan(提问者) 回复 Z4u3z1 👍就是这个意思
    2022-08-23 09:18 
  • yzm339714 yzm339714 回复 aazhuan(提问者) 终于找到了一个好一点的思路 。https://qa.1r1g.com/sf/ask/2181527701/ 可以参考下这个文档,先弄一个序号列,然后把上面的数据跟序号列关联,关联条件就跟文档的差不多,只不过他是固定的,你是根据a6来的,然后其他的也都 差不多
    2022-08-23 09:27 
最佳回答
0
Harvey1Lv7高级互助
发布于2022-8-23 09:33

这个问题有点意思,没咋遇到过。

建议在数据库中处理,以mysql为例,分两步:

①利用条件语句,按照拆分的逻辑【可以用if写固定,也可以用循环算法】,拆分输出一个数组,比如耳钉行,输出为(50,50)

②利用SUBSTRING_INDEX(str,delim,count)函数,一行拆分多行。

即可得到需要的效果。

  • 3关注人数
  • 561浏览人数
  • 最后回答于:2022-8-23 16:51
    请选择关闭问题的原因
    确定 取消
    返回顶部