怎么才能查询该时间段对应所在周的所有天数

image.png

比如我查询20231223,对应周数是51周,那么51周的天数要从51周的最小天数查询到51周最大天数。查询20231226为52周,那么由于52周的28号往后数据还没有只能查询52周28号前面有的数据

SQL yzm607210 发布于 2023-12-28 11:40 (编辑于 2023-12-28 13:57)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
用户k6280494Lv6资深互助
发布于2023-12-28 11:51

DATEINWEEK(today(),1)周一

DATEINWEEK(today(),-1)周日

  • yzm607210 yzm607210(提问者) 这样是不行的,在我查询语句里面根本不能运行
    2023-12-28 11:53 
最佳回答
0
华莉星宸Lv7高级互助
发布于2023-12-28 12:12(编辑于 2023-12-28 12:12)

根据这个SQL改改

SELECT TRUNC(SYSDATE, 'IW') + LEVEL - 1 AS 日期

FROM DUAL

CONNECT BY LEVEL <= 7;

image.png

  • yzm607210 yzm607210(提问者) 不行,我这里是要根据时间段去获取它在哪个周并把该周的天数查询出来
    2023-12-28 13:51 
最佳回答
0
快乐星光Lv5中级互助
发布于2023-12-28 15:12(编辑于 2023-12-28 15:20)

你可以另外做一张表,把每个日期得周区间先查询出来

然后在你原sql里面添加一列,用datepart(wk,[date]) as wknum把你的日期所在周数列出来,把这两个查询用year和wknum关联(left join)起来。

1、查询时就可以用开窗函数比如:

sum(某字段)over(partition by year,wknum) as 周区间汇总

2、根据时间段去获取它在哪个周并把该周的天数查询出来

count(1)over(partition by year,wknum) as 周天数

搞错了,直接添加一列datepart(wk,[date]) as wknum,然后count(1)over(partition by year,wknumas 周天数 就可以了。

注意:set datefirst 1 ;-- 设置周1为第一天

  • 4关注人数
  • 291浏览人数
  • 最后回答于:2023-12-28 15:20
    请选择关闭问题的原因
    确定 取消
    返回顶部