如何检索两个日期之间的报告数字

时间:2017-06-08 21:17:20

标签: mysql sql database crm

为了暗示,我要说我们有5个用于SQL的表

1)客户账户 2)潜在顾客 3)电话 4)报告

下面是我编写的一个SQL示例,用于了解它是如何工作的。我的问题是,如何从电话通话日期和5天后检索收到业务报告的记录。

实施例

今天是8.06.2017,我打电话给了一位主管。这个领先是ABC。 ABC对XYZ感兴趣。我于12.06.17向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关联的Lead。

我希望这是有道理的,我在SQL中非常初学者,但我知道我的SQL语法是错误的,但我的想法是理解这一点并稍后担心语法,因为我没有SQL服务器来执行它。

1 个答案:

答案 0 :(得分:1)

你离目标不远。

您需要使用正确的JOIN语法;你所拥有的有点破碎。

SELECT ... some columns ...
  FROM Lead L
  JOIN Call C  ON L.id = C.id
  JOIN ClientAccounts CA ON L.id = CA.id

将别名LCCA分配给您的三个表。

您可以尝试使用SELECT *运行此功能,以查看您获得的内容。但是在完成的查询中使用*是一个新手的错误。

接下来,您需要使用表格别名给出您希望SELECT列的名称。我必须猜测每个列来自哪个表,因为您没有向我们展示您的表定义。所以,我猜......

 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 

运行它。看看你得到了什么。如果我的示例有表或列名称错误,请修复它们。 (请不要让我们在这里修理它们;我们不知道你的桌面布局。)

最后,您需要选择日期范围。尝试

WHERE C.StartOfCall >= CURDATE() - INTERVAL 5 DAY

这将获得调用开始时或五天前午夜之后的所有行。