好的,所以我建立了一个数据库,可以让我跟踪对潜在客户的通话。基本上,用户生成一个呼叫列表,在呼叫每个客户后,他们将我的一个表中的呼叫状态字段更新为“人员已到达”,“线路忙”,“断开连接的号码”等。
我遇到的问题是,当我运行“生成呼叫列表”查询(我用来填充呼叫列表表)时,我找到了已经到达的人。我的条件是排除任何呼叫状态为“达到人”的人,但由于某种原因,它不起作用。这是SQL。
SELECT [Telephone Status].Patient_ID, Max([Telephone Status].Date_Called)
AS [Date Last Called]
FROM [Telephone Status]
WHERE ((([Telephone Status].Call_Status_Details)="Call Back Later") AND
(([Telephone Status].Call_Status)<>"Person Reached"))
GROUP BY [Telephone Status].Patient_ID;
我认为通过将Max函数与Date_Called字段一起使用,我将排除最近一次调用(Max)中具有“Person Reached”状态的个人,但我仍然会找到已经联系过的人。
如何检查每个参与者的最近Date_Called条目的这种情况(“人员已达到”),如果条件为True(已到达人员),则将其排除?
答案 0 :(得分:3)
我遇到的问题是,当我运行“生成呼叫列表”查询(我用来填充呼叫列表表)时,我找到了已经联系过的人。 < / p>
你怎么知道这句话是真的?我认为您需要检查[电话状态]表中的数据... Date_Called,Call_Status_Details和Call_Status字段,其中一个错误地包含在呼叫列表中的Patient_ID。
我的条件是排除任何呼叫状态为“已达到人”的人,但由于某种原因,它无效。
不完全......
SELECT
ts.Patient_ID,
Max(ts.Date_Called) AS [Date Last Called]
FROM [Telephone Status] AS ts
WHERE
ts.Call_Status_Details = "Call Back Later"
AND ts.Call_Status <> "Person Reached"
GROUP BY ts.Patient_ID;
...所以你有两个必须为True的标准。
呼叫列表查询中可以包含“人员到达”的某些方式:
首先是数据质量问题。您需要验证数据是否始终如您和查询所期望的那样存储。
我不知道第二种可能性。这取决于您的业务规则及其实施方式。
最后一种可能性,指数腐败,在我的经历中似乎很少见,但我听说它可能发生。紧凑型修理可以解决它。有关详细信息,请参阅Tony Towes'Corrupt Microsoft Access MDBs FAQ。
编辑:您有一个“生成呼叫列表”查询,用于填充“呼叫列表”表。在这种情况下,呼叫列表表可能与[电话状态]表的最新更新不同步。最好将查询本身用于调用列表,而不是在单独的表中复制(可能过时)信息。