代码之家  ›  专栏  ›  技术社区  ›  causita

如何SQL获取最近52个iso周

  •  0
  • causita  · 技术社区  · 7 年前

    我的工作周从周一开始。我被要求获取过去52周的数据。所以我用iso周。 以下代码为2018年第1周。

     SELECT  YEAR(DATEADD(day, 26 - DATEPART(isoww, [ShipDate]), [ShipDate]))as ISOYEAR
           ,DATEPART(ISO_WEEK, [ShipDate]) as ISOWEEK
          ,SUM([Ordered])
          ,SUM([Shipped])
      FROM [dbo].[DailyOrders]
      where product = 100203
      and DC='NY'
      and DATEPART(ISO_WEEK, [ShipDate]) >= -52
      and YEAR(DATEADD(day, 26 - DATEPART(isoww, [ShipDate]), [ShipDate]))>=2018
      GROUP BY YEAR(DATEADD(day, 26 - DATEPART(isoww, [ShipDate]), 
      [ShipDate])),DATEPART(ISO_WEEK, [ShipDate])
      ORDER BY 1
    

    1 回复  |  直到 7 年前
        1
  •  0
  •   Gordon Linoff    7 年前

    我期待着这样的事情:

     [ShipDate] >= dateadd(week, -52, getdate())
    

     [ShipDate] >= dateadd(week, -52, dateadd(day, - datepart(dw, getdate()), convert(date, getdate())))
    
        2
  •  0
  •   Arnaud Peralta    7 年前

    是的,如果你 INNER JOIN 在一个子查询中谁拥有了过去52周的全部信息。(以日期作为连接条件)。

    UPDATE 用一个 WHILE DATEADD 每周功能。所有这些都可以在存储过程中完成。