问题描述
我有一个 sql 查询,我需要找出与特定客户相关的表中的任何日期是否在不同表中的另一个日期与该日期加 5 天之间
我有一个包含客户详细信息列表(客户表)的表格,其中包含客户名称、地址和 ID (PK) 字段
我有一个包含年度评估详细信息的表格,我们在其中查看客户帐户(评估表),其中包含字段评估日期和评估 ID (pk)
我是一个单独的表格,其中包含我们与客户(会议表格)交谈的日期列表,其中包含会议名称(例如会议类型 1、会议类型 2、会议类型 3)会议日期、会议 ID (PK)
我们可以在一年中多次见到客户参加不同的会议,但是我需要一个问题来告诉我是或否,是否在 5 天的年度评估中与客户进行了交谈。
所以我需要像下面这样的东西
Select
Client_ID (PK) (from client table),Client_Name (from client table),Assessment_ID (PK) from assessment table,Assessment_date (from assessment table)
那么在这里我需要一些东西来说明,如果会议表中与该客户相关的所有日期中的任何一个都在评估日期的 5 天内,如果是,则为“是”,如果不是“否”
我可以在需要时加入所有相关表,这只是我正在努力处理的会议表中评估日期和评估日期 + 5 之间的任何日期的查询。
任何帮助,非常感谢。
解决方法
注意以下几点很有趣:
-
如果客户表与评估表有关系,那么您可以在两者之间进行内部连接,找出 X 客户的评估结果。
-
如果您现在已经有了这种关系,请执行内部联接、Exists 或 IN 以验证客户 X 是否存在于会议表中。
-
如果不能通过PK建立这种关系,这是数据结构的问题,因为没有参考会议表中的客户,我没有找到建立这种关系的方法在您的文本中。
-
假设您已经完成了我上面提到的所有操作,只需为您的代码创建一个CASE
例如:
注:我不是很明白这两个表的日期相关的过滤点,所以就这样把WHERE留了,
客气。
,类似的东西。
SELECT CustomerData,CASE
WHEN DATEDIFF(DAY,MeetingDate,GETDATE()) < 5 THEN 'Yes'
ELSE 'No'
END AS CustomerConsultedLastFiveDays
FROM CustomerMeetingTable
WHERE Conditions = Conditions;