通过数据集查询得到的“季度”,怎么能让显示每一个季度只显示一条

FineReport 用户DPraj3837383 发布于 2023-5-9 17:39
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
浅吟小时光Lv4见习互助
发布于2023-5-10 09:15

在SQL中用ROW_NUMBER() OVER(GROUP BY 季度 ORDER BY 季度 DESC)开窗函数,将同一季度的数据进行分组给序号,然后取序号为1的数据展示即可

  • 用户DPraj3837383 用户DPraj3837383(提问者) 季度,是CASE WHEN 条件显示出来的,并没有实际的字段,这个又怎么来解决呢?
    2023-05-10 10:29 
  • 浅吟小时光 浅吟小时光 回复 用户DPraj3837383(提问者) 可以用同样的条件再设置新的字段,比如里面符合第一季度和更正第一季度的条件,就设置为组1 或者在现有的季度外再套一层select,将得到的新值进行新的条件判断,这样再对每组排序就行了
    2023-05-10 10:46 
  • 用户DPraj3837383 用户DPraj3837383(提问者) 回复 浅吟小时光 能讲详细点吗,SQL初学者,非常谢谢!
    2023-05-10 10:59 
  • 浅吟小时光 浅吟小时光 回复 用户DPraj3837383(提问者) 举个例子: SELECT b.* ,ROW_NUMBER() OVER(partition by NUM ORDER BY sblx DESC) RN (select a.*,case when 季度=\'第一季度\' OR 季度=\'更正第一季度\' THEN 1 when 季度=\'第二季度\' OR 季度=\'更正第二季度\' THEN 2 end NUM from(select ssnf as 所属年份,case when (ssyf in (0,1,2) and sblx=0) then \'第一季度\' when (ssyf in (0,1,2) and sblx=2) then \'更正第一季度\' when (ssyf in (3,4,5) and sblx=0) then \'第二季度\' when (ssyf in (3,4,5) and sblx=2) then \'更正第二季度\' END 季度, ssyf 月份 ,sblx from uf_qysdssbb) a ) b 对同一组数据内进行排序,由于每组更正的sblx都是比较大的那一个,倒序分组排序就可以按RN=1取到第一笔,当该组内不存在\"更正\"开始的季度时,只会有一笔记录,这是RN=1也会取到该季度的数据
    2023-05-10 11:45 
最佳回答
0
年年plusLv5中级互助
发布于2023-5-9 17:43(编辑于 2023-5-9 17:58)

添加一个过滤 image.png

  • 用户DPraj3837383 用户DPraj3837383(提问者) 扩展后还有,第二季度,第三季度,第四季度,更正第二季度等,如果采用结果集筛选就只会等到一行了,想得到的结果是,如果有更正第一季度,第一季度这行就不显示,同理如果有更正第二季度,第二季度这行也不显示,
    2023-05-09 17:59 
  • 3关注人数
  • 242浏览人数
  • 最后回答于:2023-5-10 09:15
    请选择关闭问题的原因
    确定 取消
    返回顶部