想请大神看一下想查同环比,是个带参数的日期这么写哪不对啊查不出来

问题1.jpg

FineReport yzmhaRR81664191 发布于 2022-9-1 17:30
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
CD20160914Lv8专家互助
发布于2022-9-1 17:35(编辑于 2022-9-1 17:48)

select t.m,t.ym,

      t.销量,

      t1.销量 同期,

      (case when t1.销量 is null then '' 

          else (t.销量-t1.销量)/t1.销量 end) 同比,

      t2.销量 上期,

      (case when t2.销量 is null then '' 

          else (t.销量-t2.销量)/t2.销量 end) 环比

from 

(

select strftime('%m',b.订购日期)+0 m,

      strftime('%Y-%m',b.订购日期) ym,

      sum(a.数量) 销量

from 订单明细 a

    left join 订单 b on a.订单ID=b.订单ID

where strftime('%Y',b.订购日期) = '${year(y)}'

group by strftime('%Y-%m',b.订购日期)

) t

left join

(

select strftime('%m',b.订购日期)+0 m,

      strftime('%Y-%m',b.订购日期) ym,

      sum(a.数量) 销量

from 订单明细 a

    left join 订单 b on a.订单ID=b.订单ID

where strftime('%Y',b.订购日期) = '${year(y)-1}'

group by strftime('%Y-%m',b.订购日期)

) t1 on t.m=t1.m

left join

(

select (case when strftime('%m',b.订购日期)+0 <=11

        then strftime('%m',b.订购日期)+1 end) m,

      strftime('%Y-%m',b.订购日期) ym,

      sum(a.数量) 销量

from 订单明细 a

    left join 订单 b on a.订单ID=b.订单ID

where strftime('%Y',b.订购日期) = '${year(y)}'

group by strftime('%Y-%m',b.订购日期)

union

select (case when strftime('%m',b.订购日期)+0 =12

        then 1 end) m,

      strftime('%Y-%m',b.订购日期) ym,

      sum(a.数量) 销量

from 订单明细 a

    left join 订单 b on a.订单ID=b.订单ID

where strftime('%Y',b.订购日期) = '${year(y)-1}'

group by strftime('%Y-%m',b.订购日期)

) t2 on t.m=t2.m

  • yzmhaRR81664191 yzmhaRR81664191(提问者) 不行啊 我这个参数是年月日的 不是只有年份
    2022-09-01 17:40 
  • CD20160914 CD20160914 回复 yzmhaRR81664191(提问者) 考试用的是年的参数。不是年月日。相信我。真的。
    2022-09-01 17:43 
  • yzmhaRR81664191 yzmhaRR81664191(提问者) 回复 CD20160914 哈哈 冒昧问一下 考试好过吗 9月5号就考试啦
    2022-09-01 17:47 
  • CD20160914 CD20160914 回复 yzmhaRR81664191(提问者) 如果你参数一定要录入年月日,那么参考上面的吧。我修改了。
    2022-09-01 17:47 
  • CD20160914 CD20160914 回复 yzmhaRR81664191(提问者) 只要认真做了。都好过呀。它又不是要求你考试满分,你看我就没有考试过。可能我考不过吧。嘿嘿 。。。
    2022-09-01 17:49 
最佳回答
0
runerLv7资深互助
发布于2022-9-1 17:35(编辑于 2022-9-1 18:01)

写法错了

'left(${参数名},4) +1'

试试

'left(YEARDELTA(${参数名},1),4)'

image.png

替换参数,看一下sql

最佳回答
0
机智的ywjLv5初级互助
发布于2022-9-1 17:37(编辑于 2022-9-1 17:39)

我看出来了这是第3题,直接参数-1好了,参考楼上大佬的,sqllite数据库令人头秃函数没必要深究

  • yzmhaRR81664191 yzmhaRR81664191(提问者) 不行 我这个参数是年月日格式的 要提取出来他的年 跟之前的年相比较
    2022-09-01 17:41 
  • 4关注人数
  • 277浏览人数
  • 最后回答于:2022-9-1 18:01
    请选择关闭问题的原因
    确定 取消
    返回顶部