sql 一个字段是字符串逗号分隔,其他的事单独字符,拼接


    SELECT sss.*,co.id conid,(sss.invoicedAmount1-ifnull(b.entryAmount,0)) invoiceBalance  from (
    select id id,contract_number contractNumber,customer_name customerName,invoice_date invoiceDate1,entry_amount1 invoicedAmount1,
	
    case when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=0 THEN
    (select substring_index(substring_index(invoice_tax_number,',',1),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=1 THEN
    (select substring_index(substring_index(invoice_tax_number,',',1),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=2 THEN
    (select substring_index(substring_index(invoice_tax_number,',',1),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=3 THEN
    (select substring_index(substring_index(invoice_tax_number,',',1),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=4 THEN
    (select substring_index(substring_index(invoice_tax_number,',',1),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=5 THEN
    (select substring_index(substring_index(invoice_tax_number,',',1),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=6 THEN
    (select substring_index(substring_index(invoice_tax_number,',',1),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=7 THEN
    (select substring_index(substring_index(invoice_tax_number,',',1),',',-1))
    END as invoiceTaxNumber
    from invoice_info WHERE invoice_status = '3'
    union all
    select  id id,contract_number contractNumber,customer_name customerName,invoice_date2 invoiceDate1,entry_amount2 invoicedAmount1,
    case when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=0 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=1 THEN
    (select substring_index(substring_index(invoice_tax_number,',',2),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=2 THEN
    (select substring_index(substring_index(invoice_tax_number,',',2),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=3 THEN
    (select substring_index(substring_index(invoice_tax_number,',',2),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=4 THEN
    (select substring_index(substring_index(invoice_tax_number,',',2),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=5 THEN
    (select substring_index(substring_index(invoice_tax_number,',',2),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=6 THEN
    (select substring_index(substring_index(invoice_tax_number,',',2),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=7 THEN
    (select substring_index(substring_index(invoice_tax_number,',',2),',',-1))
    END as invoiceTaxNumber
    from invoice_info WHERE invoice_status = '3' and (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))>0
    union all
    select id id,contract_number contractNumber,customer_name customerName,invoice_date3 invoiceDate1,entry_amount3 invoicedAmount1,
    case when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=0 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=1 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=2 THEN
    (select substring_index(substring_index(invoice_tax_number,',',3),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=3 THEN
    (select substring_index(substring_index(invoice_tax_number,',',3),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=4 THEN
    (select substring_index(substring_index(invoice_tax_number,',',3),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=4 THEN
    (select substring_index(substring_index(invoice_tax_number,',',3),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=5 THEN
    (select substring_index(substring_index(invoice_tax_number,',',3),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=6 THEN
    (select substring_index(substring_index(invoice_tax_number,',',3),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=7 THEN
    (select substring_index(substring_index(invoice_tax_number,',',3),',',-1))
    END as invoiceTaxNumber
    from invoice_info WHERE invoice_status = '3'  and (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))>1
    union all
    select id id,contract_number contractNumber,customer_name customerName,invoice_date4 invoiceDate1,entry_amount4 invoicedAmount1,
    case when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=0 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=1 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=2 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=3 THEN
    (select substring_index(substring_index(invoice_tax_number,',',4),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=4 THEN
    (select substring_index(substring_index(invoice_tax_number,',',4),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=5 THEN
    (select substring_index(substring_index(invoice_tax_number,',',4),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=6 THEN
    (select substring_index(substring_index(invoice_tax_number,',',4),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=7 THEN
    (select substring_index(substring_index(invoice_tax_number,',',4),',',-1))
    END as invoiceTaxNumber
    from invoice_info WHERE invoice_status = '3'  and (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))>2
    union all
    select id id,contract_number contractNumber,customer_name customerName,invoice_date5 invoiceDate1,entry_amount5 invoicedAmount1,
    case when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=0 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=1 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=2 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=3 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=4 THEN
    (select substring_index(substring_index(invoice_tax_number,',',5),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=5 THEN
    (select substring_index(substring_index(invoice_tax_number,',',5),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=6 THEN
    (select substring_index(substring_index(invoice_tax_number,',',5),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=7 THEN
    (select substring_index(substring_index(invoice_tax_number,',',5),',',-1))
    END as invoiceTaxNumber
    from invoice_info WHERE invoice_status = '3'  and (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))>3
    union all
    select id id,contract_number contractNumber,customer_name customerName,invoice_date6 invoiceDate1,entry_amount6 invoicedAmount1,
    case when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=0 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=1 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=2 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=3 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=4 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=5 THEN
    (select substring_index(substring_index(invoice_tax_number,',',6),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=6 THEN
    (select substring_index(substring_index(invoice_tax_number,',',6),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=7 THEN
    (select substring_index(substring_index(invoice_tax_number,',',6),',',-1))
    END as invoiceTaxNumber
    from invoice_info WHERE invoice_status = '3'  and (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))>4
    union all
    select id id,contract_number contractNumber,customer_name customerName,invoice_date7 invoiceDate1,entry_amount7 invoicedAmount1,
    case when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=0 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=1 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=2 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=3 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=4 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=5 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=6 THEN
    (select substring_index(substring_index(invoice_tax_number,',',7),',',-1))
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=7 THEN
    (select substring_index(substring_index(invoice_tax_number,',',7),',',-1))
    END as invoiceTaxNumber
    from invoice_info WHERE invoice_status = '3'  and (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))>5
    union all
    select id id,contract_number contractNumber,customer_name customerName,invoice_date8 invoiceDate1,entry_amount8 invoicedAmount1,
    case when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=0 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=1 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=2 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=3 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=4 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=5 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=6 THEN
    null
    when (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))=7 THEN
    (select substring_index(substring_index(invoice_tax_number,',',8),',',-1))
    END as invoiceTaxNumber
    from invoice_info WHERE invoice_status = '3'  and (LENGTH(invoice_tax_number) - LENGTH( REPLACE (invoice_tax_number, ',', '')))>6
    ) sss
    LEFT JOIN contract_info co ON sss.contractNumber = co.contract_number
    left join
    (
    SELECT invoice_tax_number,sum(return_amount) entryAmount from money_back_info WHERE   invoice_tax_number is not null and return_type=2 GROUP BY  invoice_tax_number
    ) b on sss.invoiceTaxNumber=b.invoice_tax_number

    WHERE (sss.invoicedAmount1-ifnull(b.entryAmount,0))>0


    <if test="commonParamsVm.returnCompany!= null and commonParamsVm.returnCompany != ''  ">
      and sss.customerName!= #{commonParamsVm.returnCompany}
    </if>
    <if test="commonParamsVm.dimParamValue!= null and commonParamsVm.dimParamValue != ''  ">

      AND (sss.customerName like CONCAT(CONCAT('%', #{commonParamsVm.dimParamValue}), '%')
        or sss.contractNumber like CONCAT(CONCAT('%', #{commonParamsVm.dimParamValue}), '%')
      or sss.invoiceTaxNumber like CONCAT(CONCAT('%', #{commonParamsVm.dimParamValue}), '%')
      )
    </if>
    ORDER BY
    sss.id DESC

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值