mysql 动态行转列_MySQL行转列

比如一个单子,多个收据单用逗号隔开,怎么把这一个单子所有收据单独展示出来,行转成列呢?

ae2ae719253f515fd988a08b164e325a.png

方法一:

这里需要用到循环,首先创建一个1-10的序列:

SELECT

@rownum :=@rownum + 1 AS seq

FROM

(SELECT @rownum := 0) r,

bills

LIMIT 0,10

其次依次运用

SUBSTRING_INDEX(b.receipt_no, ',', seq)

从左到右取单据,

再用

CONCAT(SUBSTRING_INDEX(b.receipt_no, ',', seq - 1),',')

取它前面的多余的单据,加上逗号,

最后用replace函数把前面多余取数替换成空值。

循环次数由收据多少决定,这里收据单号都是7位,把逗号替换掉之后除以7即得收据多少。

86fab8890a1061799caf86ffd53930a0.png

方法二:

利用Mysql自带的表help_topic里的help_topic_id作为循环序列,

收据大小等于逗号个数+1。

以取出第二个为例,当序号等于2的时候,

先取出前两个0026704,1006327,然后再反向从右到左取出第二个。

ab3755cf36830e734cf72962be129eb0.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值