zoukankan      html  css  js  c++  java
  • 帆软报表(finereport)根据提供的数据求出该日期所在的季度

    根据当前日期求字段中日期的季度 

    Oracle数据库

    select
    T1.INDEXCODE
    ,T1.CREATETIME 
    ,CASE when T1.CREATETIME = 
    (case when to_char(SYSDATE,'MM')/3-1 <= 0 
    then TRIM(to_char(SYSDATE,'YYYY')-1)||'-'||TRIM(4+(to_char(SYSDATE,'MM')/3-1))
    else TRIM(to_char(SYSDATE,'YYYY'))||'-'||TRIM(to_char(SYSDATE,'MM')/3-1)
    end) then '本季度' 
    when T1.CREATETIME = 
    (case when to_char(SYSDATE,'MM')/3-2 <= 0 
    then TRIM(to_char(SYSDATE,'YYYY')-1)||'-'||TRIM(4+(to_char(SYSDATE,'MM')/3-2))
    else TRIM(to_char(SYSDATE,'YYYY'))||'-'||TRIM(to_char(SYSDATE,'MM')/3-2)
    end)
    then '前1季度' 
    when T1.CREATETIME = 
    (case when to_char(SYSDATE,'MM')/3-3 <= 0 
    then TRIM(to_char(SYSDATE,'YYYY')-1)||'-'||TRIM(4+(to_char(SYSDATE,'MM')/3-3))
    else TRIM(to_char(SYSDATE,'YYYY'))||'-'||TRIM(to_char(SYSDATE,'MM')/3-3)
    end) 
    then '前2季度' 
    when T1.CREATETIME = 
    (case when to_char(SYSDATE,'MM')/3-4 <= 0 
    then TRIM(to_char(SYSDATE,'YYYY')-1)||'-'||TRIM(4+(to_char(SYSDATE,'MM')/3-4))
    else TRIM(to_char(SYSDATE,'YYYY'))||'-'||TRIM(to_char(SYSDATE,'MM')/3-4)
    end) 
    then '前3季度' 
    when T1.CREATETIME = 
    (case when to_char(SYSDATE,'MM')/3-5 <= 0 
    then TRIM(to_char(SYSDATE,'YYYY')-1)||'-'||TRIM(4+(to_char(SYSDATE,'MM')/3-5))
    else TRIM(to_char(SYSDATE,'YYYY'))||'-'||TRIM(to_char(SYSDATE,'MM')/3-5)
    end)
    then '前4季度' END as 指标
    from TableA  t1
    INNER JOIN TableB  t2 on T1.indexcode = t2.indexcode 
    where T2.indexcode in ('I1301000019')

    结果:

    在报表中使用动态参数,根据所选择日期信息展示所在季度各指标

    select  
    
    CREATETIME 
    ,CASE when T1.CREATETIME = '${jd}' then '本期' 
    when T1.CREATETIME = 
    (case when SUBSTR('${jd}',-1,1)-1<=0 
    then SUBSTR('${jd}',1,4)-1||'-'||(4+SUBSTR('${jd}',-1,1)-1)
    else SUBSTR('${jd}',1,4)||'-'||(SUBSTR('${jd}',-1,1)-1)
    end)
    then '前1期' 
    when T1.CREATETIME = 
    (case when SUBSTR('${jd}',-1,1)-2<=0 
    then SUBSTR('${jd}',1,4)-1||'-'||(4+SUBSTR('${jd}',-1,1)-2)
    else SUBSTR('${jd}',1,4)||'-'||(SUBSTR('${jd}',-1,1)-2)
    end) 
    then '前2期' 
    when T1.CREATETIME = 
    (case when SUBSTR('${jd}',-1,1)-3<=0 
    then SUBSTR('${jd}',1,4)-1||'-'||(4+SUBSTR('${jd}',-1,1)-3)
    else SUBSTR('${jd}',1,4)||'-'||(SUBSTR('${jd}',-1,1)-3)
    end) 
    then '前3期' 
    when T1.CREATETIME = 
    (case when SUBSTR('${jd}',-1,1)-4<=0 
    then SUBSTR('${jd}',1,4)-1||'-'||(4+SUBSTR('${jd}',-1,1)-4)
    else SUBSTR('${jd}',1,4)||'-'||(SUBSTR('${jd}',-1,1)-4)
    end)
    then '前4期' END as 季度
    
    from  table

    规范日期:将字符串形式的'2019-08-01'变成‘8/1’类型

    select replace(str(substring('2019-08-01',6,2)*1)+'/'+str(right('2019-08-01',2)*1),' ','')

  • 相关阅读:
    HTML中为何P标签内不可包含块元素?
    js判断鼠标位置是否在某个div中
    拒绝图片延迟加载,爽爽的看美图
    PHP为什么会被认为是草根语言?
    宜信开源微服务任务调度平台(SIA-TASK)
    JSBridge框架解决通信问题实现移动端跨平台开发
    如何运用多阶构建编写优雅的Dockerfile
    Sharding-JDBC 使用入门和基本配置
    程序员笔记|详解Eureka 缓存机制
    程序员笔记|常见的Spring异常分析及处理
  • 原文地址:https://www.cnblogs.com/Williamls/p/11090818.html
Copyright © 2011-2022 走看看