日期统计

1011新week.sql

请问各位大神,如何才能在周统计的时候默认周三开始

我之前是用set datefirst 3,但是这样的话2019-01-01(周二)会算作第一周的数据,2019-01-02(周三)算作第二周的数据

我需要01-01的数据算作2018年最后一周的数据,01-02是2019年第一周的数据,即每年的第一个周三开始算作第一周,该怎么解决呢?

试了两种方法都不太可行,是要写一个函数吗,有没有简便的方法呀?

请各路大神指教

番薯_asama 发布于 2019-10-11 08:39 (编辑于 2019-10-12 08:21)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
张洪威Lv6高级互助
发布于2019-10-11 08:48

set datefirst 3

然后对datepart的值-1是不是就可以了。

  • 番薯_asama 番薯_asama(提问者) 但是这样的话01-01的周数为0了,我需要的是把01-01的数据算作2018年最后一周的数据
    2019-10-11 09:14 
  • 张洪威 张洪威 回复 番薯_asama(提问者) datepart-1 就是你要的周。针对01-01特殊处理,新建一列对datepart进行case when判断,when 1的时候,对日期进行datedif减几天转成去年年末,然后datepart。
    2019-10-11 09:22 
  • 番薯_asama 番薯_asama(提问者) 回复 张洪威 谢谢,昨天用你的方法做出来了,sql放到问题更新了,但就是要减几天的判断有点麻烦,但是比写死要好多了
    2019-10-12 08:23 
  • 张洪威 张洪威 回复 番薯_asama(提问者) 做出来了就好,我之前没实操。我之前的想法是比如01-01 就日期-day(字段)-1转换成2018-12-31 那就是18年最后一周了, 01-02同样也能日期-day(字段)-1转2018-12-31,这样可能不用像你sql里面分那么多种情况。
    2019-10-12 08:45 
  • 番薯_asama 番薯_asama(提问者) 回复 张洪威 嗯嗯好的,按照你的方法确实方便很多,受教了,十分感谢
    2019-10-15 15:38 
最佳回答
0
FaintLv6中级互助
发布于2019-10-11 09:11

建议做一张时间维度表,把近几年每个日期对应的周先用sql写好,每次需要去的时候连接一下这个表就行

  • 番薯_asama 番薯_asama(提问者) 这种要有人专门维护,所以我想写一个自动修改的
    2019-10-12 08:23 
  • 3关注人数
  • 518浏览人数
  • 最后回答于:2019-10-12 08:21
    请选择关闭问题的原因
    确定 取消
    返回顶部