像这种的查上月入职人数以及去年同期的入职人数的sql语句该怎么弄?迷茫。。

image.png

qianzhiwen 发布于 2020-10-28 11:00
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
snrtuemcLv8专家互助
发布于2020-10-28 11:02(编辑于 2020-10-28 11:06)

参考同期比-https://help.fanruan.com/finereport/doc-view-349.html


sql的话,参考下面,可以直接在帆软的自带frdome中查看

image.png

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.订购日期) = '${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.订购日期) = '${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.订购日期) = '${y}'

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

) t2 on t.m=t2.m


最佳回答
0
沉默的反补Lv6中级互助
发布于2020-10-28 11:05(编辑于 2020-10-28 11:11)
SQL查询今年和去年的同期数据
select a.store,sum_sales_lweek,sum_nb,sum_nos,[2013sum_sales_lweek],[2013sum_nb],[2013sum_nos] from 
(select store,sum(endprice*nb) as sum_sales_lweek,SUM(nb) as sum_nb,count(distinct nos) as sum_nos 
from [CMD].[dbo].[cmd_xjjx_sale] where outdate='20140216' and endprice>0 
group by store) a,
(select store,sum(endprice*nb) as [2013sum_sales_lweek],SUM(nb) as [2013sum_nb],count(distinct nos) as [2013sum_nos]
from [CMD].[dbo].[cmd_xjjx_sale] where outdate='20130216' and endprice>0 
group by store) b where a.store=b.store


最佳回答
0
xiaomiliLv6初级互助
发布于2020-10-28 11:52

这个根据你的是什么数据库,sql的写法稍微略有不同;

比如sqlserver数据库的;

今年

case when 时间字段 between '2020-01-01' and '2020-10-27' then 1 else 0 end;

去年同期

case when 时间字段 between convert(nvarchar(15),DATEADD(year,-1,'2020-01-01'),120) and convert(nvarchar(15),DATEADD(year,-1,'2020-10-27'),120) then 1 else 0 end;


最佳回答
0
不可爱小羊Lv4见习互助
发布于2021-1-27 18:10

做出来了吧 答案能不能发一下

  • 5关注人数
  • 1003浏览人数
  • 最后回答于:2021-1-27 18:10
    请选择关闭问题的原因
    确定 取消
    返回顶部