怎么对某一列下面的每个单元格里的内容进行排序

image.png

image.png

FineReport 头大的大头 发布于 2023-7-4 09:21 (编辑于 2023-7-4 11:09)
1min目标场景问卷 立即参与
回答问题
悬赏:10 F币 4人赏过 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
CD20160914Lv8专家互助
发布于2023-7-4 10:57(编辑于 2023-7-4 11:07)

不知道你是什么数据库,我用oracel数据库的方式来进行拆分后,再拼接

1、按换行符号拆分成多行,把它开成多行

2、同时截取第一行的日期出来

3、再通过函数拼接,并且按日期排序后拼接

------------------mysql的语句

select 

 t2.gruid,

 GROUP_CONCAT(t2.com_row ORDER BY t2.日期 SEPARATOR '@' ) as 拼接后

 

 from (

select 

tmp.gruid,

tmp.com_row,

str_to_date(replace(replace(replace(replace(substr(tmp.com_row,3,instr(tmp.com_row,' ')-2),' ',''),'年','-'),'月','-'),'日',''),'%Y-%m-%d') as 日期

 

 from (

select 

substring_index(

    substring_index(

      t.com,

      '@',

      b.help_topic_id + 1

    ),

    '@' ,- 1

  ) AS com_row,

t.gruid

 from (

select 1 as gruid,'1.2022年6月23日 13:34,这是测试的数据,好的1000144不是@2.2022年6月15日 09:30,这是另一个测试责任人@3.2022年6月3日 10:20,我是一个测试第三条数据' as com

) t 

JOIN mysql.help_topic b ON b.help_topic_id < (

  length(t.com) - length(

    REPLACE (t.com, '@', '')) + 1)

    ) tmp

    ) t2

    

    

image.png

最佳回答
0
大林3143511Lv5中级互助
发布于2023-7-4 09:27(编辑于 2023-7-4 09:27)

利用rank函数:

https://help.fanruan.com/finereport/doc-view-810.html

.获取数组元素序号函数RANK(number,ref,order)

RANK(number,ref,order):返回一个数在一个数组中的秩。(如果把这个数组排序,该数的秩即为它在数组中的序号。)

参数说明:

number:所求秩的数(可以是 Boolean型,true=1,false=0)

ref:可以是数组,引用,或一系列数,非实数的值被忽略处理(接受 Boolean 型,true=1,false=0)

order:指定求秩的参数,非零为升序,零为降序

  • 罗寒 罗寒(提问者) 直接在单元格用这个函数嘛?
    2023-07-04 09:28 
  • 大林3143511 大林3143511 回复 罗寒(提问者) 你这个里面是多个字符串,那排序的话,按照什么规则来排,需要确认
    2023-07-04 09:30 
  • 罗寒 罗寒(提问者) 回复 大林3143511 按时间降序,单元格里的内容是一些事件
    2023-07-04 09:32 
  • 大林3143511 大林3143511 回复 罗寒(提问者) 那最好有单独的时间列,将每个时间做为数组的一个元素,排序
    2023-07-04 09:35 
  • 罗寒 罗寒(提问者) 回复 大林3143511 单独的时间列?时间重新搞出一列嘛?
    2023-07-04 09:37 
  • 3关注人数
  • 317浏览人数
  • 最后回答于:2023-7-4 11:09
    请选择关闭问题的原因
    确定 取消
    返回顶部