如何检索两个日期之间的报告数字
How to retrieve report figure between two dates
为了隐含,我要说我们有 5 个表 SQL
1) 客户账户
2) 线索
3) 来电
4) 报告
下面是我编写的一个 SQL 示例,目的是了解它的工作原理。我的问题是,如何检索从 phone 呼叫之日起 5 天后收到业务报告的记录。
例子
今天是 2017 年 6 月 8 日,我给一位潜在客户打了 phone 电话。这条线索是 ABC。 ABC 对 XYZ 感兴趣。我于 2017 年 6 月 12 日向 XYZ 发送了一份报告。这是在 5 天内。所以应该检索并计算这条记录,因为我可能会在 5 天内找到超过 100 条记录。
SELECT Id, Name, DateOfCall
FROM Lead, Call, ClientAccounts
ON Lead.id = Call.id AND Lead.id = ClientAccounts.id
WHERE DATEDIFF (DateOfReport, StartOfCall, getDate()) < 5
如果我执行此 Sql 语句,它应该检索上述报告、ClientAccount 的名称以及与该 ClientAccount 关联的潜在客户。
我希望这是有道理的,我是 SQL 的初学者,但我知道我对 SQL 的语法是错误的,但我的想法是理解这一点,稍后再担心语法,因为我没有 SQL 服务器来执行此操作。
您离目标不远了。
您需要使用正确的 JOIN
语法;你的东西有点破。
SELECT ... some columns ...
FROM Lead L
JOIN Call C ON L.id = C.id
JOIN ClientAccounts CA ON L.id = CA.id
这会将别名 L
、C
和 CA
分配给您的三个 table。
您可以尝试 运行 这个和 SELECT *
看看你得到了什么。但是在完成的查询中使用 *
是菜鸟的错误。
接下来您需要提供您希望 SELECT
的列的名称,以及 table 别名。我必须猜测每列来自哪个 table,因为您没有向我们展示您的 table 定义。所以,我猜...
SELECT L.id, L.Name, C.DateOfCall
FROM Lead L
JOIN Call C ON L.id = C.id
JOIN ClientAccounts CA ON L.id = CA.id
运行那个。看看你得到了什么。如果我的示例有错误的 table 或列名,请修复它们。 (请不要要求我们在此处修复它们;我们不知道您的 table 布局。)
最后您需要 select 日期范围。尝试
WHERE C.StartOfCall >= CURDATE() - INTERVAL 5 DAY
这将获取呼叫在五天前的午夜或之后开始的所有行。
为了隐含,我要说我们有 5 个表 SQL
1) 客户账户 2) 线索 3) 来电 4) 报告
下面是我编写的一个 SQL 示例,目的是了解它的工作原理。我的问题是,如何检索从 phone 呼叫之日起 5 天后收到业务报告的记录。
例子
今天是 2017 年 6 月 8 日,我给一位潜在客户打了 phone 电话。这条线索是 ABC。 ABC 对 XYZ 感兴趣。我于 2017 年 6 月 12 日向 XYZ 发送了一份报告。这是在 5 天内。所以应该检索并计算这条记录,因为我可能会在 5 天内找到超过 100 条记录。
SELECT Id, Name, DateOfCall
FROM Lead, Call, ClientAccounts
ON Lead.id = Call.id AND Lead.id = ClientAccounts.id
WHERE DATEDIFF (DateOfReport, StartOfCall, getDate()) < 5
如果我执行此 Sql 语句,它应该检索上述报告、ClientAccount 的名称以及与该 ClientAccount 关联的潜在客户。
我希望这是有道理的,我是 SQL 的初学者,但我知道我对 SQL 的语法是错误的,但我的想法是理解这一点,稍后再担心语法,因为我没有 SQL 服务器来执行此操作。
您离目标不远了。
您需要使用正确的 JOIN
语法;你的东西有点破。
SELECT ... some columns ...
FROM Lead L
JOIN Call C ON L.id = C.id
JOIN ClientAccounts CA ON L.id = CA.id
这会将别名 L
、C
和 CA
分配给您的三个 table。
您可以尝试 运行 这个和 SELECT *
看看你得到了什么。但是在完成的查询中使用 *
是菜鸟的错误。
接下来您需要提供您希望 SELECT
的列的名称,以及 table 别名。我必须猜测每列来自哪个 table,因为您没有向我们展示您的 table 定义。所以,我猜...
SELECT L.id, L.Name, C.DateOfCall
FROM Lead L
JOIN Call C ON L.id = C.id
JOIN ClientAccounts CA ON L.id = CA.id
运行那个。看看你得到了什么。如果我的示例有错误的 table 或列名,请修复它们。 (请不要要求我们在此处修复它们;我们不知道您的 table 布局。)
最后您需要 select 日期范围。尝试
WHERE C.StartOfCall >= CURDATE() - INTERVAL 5 DAY
这将获取呼叫在五天前的午夜或之后开始的所有行。