首页 > 解决方案 > SQL Server Management Studio:获取两个日期列之间的数据

问题描述

在注册后的前 6 个月(182 天)内,我需要帮助为每位客户获取销售收入

例子:

在此处输入图像描述

我需要为每个客户获取注册日期和 6 个月之间的总销售额。因此,对于客户 A,它将在 2019 年 8 月 3 日到 2020 年 2 月 1 日之间,以此类推。

销售数据的结构为客户、日期、销售额 $

例子:

在此处输入图像描述

我认为我需要编写某种循环?客户列表超过 100,000 行。

谢谢!

标签: sql-serverssms

解决方案


您可以遵循的示例:

SELECT 
    c.CustomerName,
    c.SignUpDate,
    DATEADD(day, 182, c.SignUpDate) AS [6MonthDate],
    ISNULL(SUM(s.SaleAmount), 0) AS [6MonthSalesTotal]
FROM
    Customer c
    LEFT OUTER JOIN Sales s
    ON s.CustomerID = c.CustomerID
    AND s.DateOfSale BETWEEN c.SignUpDate AND DATEADD(day, 182, c.SignUpDate)
GROUP BY c.CustomerName, c.SignUpDate, DATEADD(day, 182, c.SignUpDate);

推荐阅读