【问题标题】:Convert daily data into the weekly format in SQL Server 2008在 SQL Server 2008 中将每日数据转换为每周格式
【发布时间】:2014-02-11 21:26:36
【问题描述】:
Conversiondate         Activity
2013-09-30 00:00:00    Renaissance_Homepage_022013
2013-09-12 00:00:00    RFP - Total
2013-09-23 00:00:00    Reservations Rate List Menu
2013-09-08 00:00:00    SHS 2.0 Home
2013-09-17 00:00:00    MR Promo Registration Confirmation
2013-09-13 00:00:00    Renaissance_ReservationOverlay_022013
2013-09-02 00:00:00    Reservations Rate List Menu
2013-09-13 00:00:00    Renaissance_HotelPage_022013
2013-09-08 00:00:00    Reservations Rate List Menu

我的上表包含日期和活动。现在我想编写脚本,每周我可以在其中找到新的活动。例如:我本周有 10 项活动,下周将增加另外 2 项活动。因此,这 2 个将是新的,并希望编写脚本以每周为基础以以下格式查找新活动;

本周将从星期日开始。

StartDateWEEk     ENDDATEWEEK             Activity          Week
----------------------------------------------------------------    
2013-09-01         2013-09-07         Booking Confo          36
2013-09-01         2013-09-07         Mobile                 36
2013-09-08         2013-09-14         Mobileconfo            37
2013-09-08         2013-09-14         Mobile                 37
2013-09-08         2013-09-14         Reservation            37

我想创建这种格式,您可以看到在第 37 周有一个新的活动来调用 reservation。我想设置自动化流程来每周捕捉这些新活动。

【问题讨论】:

  • 您是如何在所需的输出中获得这些 Activity 值的??
  • @M.Ali:只有一张桌子,我每周必须从中找到新活动。

标签: sql sql-server-2008 date


【解决方案1】:

我只是猜测您是如何在您的 Desired OUPUT 中获得活动列的,无论如何这是我会做的......

测试数据

DECLARE @TABLE TABLE( Conversiondate DATETIME,Activity VARCHAR(400))
INSERT INTO @TABLE VALUES
('2013-09-30 00:00:00','Renaissance_Homepage_022013'),
('2013-09-12 00:00:00','RFP - Total'),
('2013-09-23 00:00:00','Reservations Rate List Menu'),
('2013-09-08 00:00:00','SHS 2.0 Home'),
('2013-09-17 00:00:00','MR Promo Registration Confirmation'),
('2013-09-13 00:00:00','Renaissance_ReservationOverlay_022013'),
('2013-09-02 00:00:00','Reservations Rate List Menu'),
('2013-09-13 00:00:00','Renaissance_HotelPage_022013'),
('2013-09-08 00:00:00','Reservations Rate List Menu')

查询

SELECT   CAST(DATEADD(dd, -(DATEPART(dw, Conversiondate)-1)
                         , Conversiondate) AS DATE) [WeekStart]
        ,CAST(DATEADD(dd, 7-(DATEPART(dw, Conversiondate))
                          , Conversiondate) AS DATE) [WeekEnd]
        ,  Activity
        ,DATEPART(WEEK, Conversiondate) [Week_Number]
FROM @TABLE

结果集

╔════════════╦════════════╦═══════════════════════════════════════╦═════════════╗
║ WeekStart  ║  WeekEnd   ║               Activity                ║ Week_Number ║
╠════════════╬════════════╬═══════════════════════════════════════╬═════════════╣
║ 2013-09-29 ║ 2013-10-05 ║ Renaissance_Homepage_022013           ║          40 ║
║ 2013-09-08 ║ 2013-09-14 ║ RFP - Total                           ║          37 ║
║ 2013-09-22 ║ 2013-09-28 ║ Reservations Rate List Menu           ║          39 ║
║ 2013-09-08 ║ 2013-09-14 ║ SHS 2.0 Home                          ║          37 ║
║ 2013-09-15 ║ 2013-09-21 ║ MR Promo Registration Confirmation    ║          38 ║
║ 2013-09-08 ║ 2013-09-14 ║ Renaissance_ReservationOverlay_022013 ║          37 ║
║ 2013-09-01 ║ 2013-09-07 ║ Reservations Rate List Menu           ║          36 ║
║ 2013-09-08 ║ 2013-09-14 ║ Renaissance_HotelPage_022013          ║          37 ║
║ 2013-09-08 ║ 2013-09-14 ║ Reservations Rate List Menu           ║          37 ║
╚════════════╩════════════╩═══════════════════════════════════════╩═════════════╝

【讨论】:

  • 非常感谢 Ali 的帮助,它的工作非常好。现在我想做一些事情,而我可以设置自动化 SQL 流程,并且我每周都可以找到新的活动。例如:第一周有 10 个活动名称,第二周有 13 个活动名称,这意味着第二周有 3 个新活动。那么,我怎样才能找到每周的新活动?我想从 2013 年 1 月到 2020 年 12 月永久设置此流程。这对我来说是新的,所以我对这个要求感到非常困惑。
  • 感谢 Ali,这很好用,但是如果我想在 2013 年到 2020 年以自动化模式设置这个脚本,那么这怎么可能呢?
  • 在 sql server 中限时执行有两种处理方式。 1) 使用 sql server 代理作业 2) 在代码中使用 WAITFOR claue。在您的情况下,您将一个 sql server 代理工作将是更合适的选择。 Read here 了解有关 sql server 代理作业的更多信息。另外,如果答案对您有帮助,请接受:)祝您好运
  • 好的,感谢您的回答,我非常了解代理工作。但是你能告诉我我怎么知道新活动是通过那个自动化过程进入表格的。如果我想知道下周有 2 项新活动,那么我怎么知道是哪项新活动?...
  • 我正在尝试接受您的回答,但他们说您应该为此拥有至少 15 名声望。
猜你喜欢
  • 2020-07-06
  • 2020-06-13
  • 2016-01-29
  • 2018-11-12
  • 1970-01-01
  • 2021-04-28
  • 1970-01-01
  • 2013-05-02
  • 1970-01-01
相关资源
最近更新 更多