查找表中的任何日期是不是在两个日期之间
Posted
技术标签:
【中文标题】查找表中的任何日期是不是在两个日期之间【英文标题】:Finding if Any date in a table is between 2 dates查找表中的任何日期是否在两个日期之间 【发布时间】:2021-06-07 16:14:03 【问题描述】:我有一个 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)
那么在这里我需要一些东西来说明,CASE WHEN 从与该客户相关的会议表中的所有日期来看,如果是,则在评估日期后 5 天内是否有任何日期,如果不是,则为“Y”
我可以在需要时加入所有相关表,这只是我正在努力解决的评估日期和评估日期 + 5 之间的会议表中的任何日期的查询。
任何帮助,不胜感激。
【问题讨论】:
你用的是什么软件?数据库服务器? mysql?日期函数在不同的实现之间差别很大。另外,您能否提供评估和会议表架构的基本细分? 【参考方案1】:类似的东西。
SELECT CustomerData
,CASE
WHEN DATEDIFF(DAY, MeetingDate, GETDATE()) < 5 THEN 'Yes'
ELSE 'No'
END AS CustomerConsultedLastFiveDays
FROM CustomerMeetingTable
WHERE Conditions = Conditions;
【讨论】:
【参考方案2】:注意一些点很有意思:
如果客户表与评估表有关系,那么您可以在两者之间进行内连接,找出 X 客户的评估。
如果您现在已经有这种关系,请执行 inner join、Exists 或 IN 以验证 Client X 是否存在于 Meeting 表中。
如果不能通过PK建立这种关系,那是数据结构的问题,因为没有参考会议表中的客户,我在你的文本中没有找到建立这种关系的方法.
假设你已经完成了我上面提到的所有事情,只需为你的代码制作一个 CASE
例如:
注意:我不是很明白这两个表的日期相关的过滤点,所以我把WHERE留成这样,
慷慨地。
【讨论】:
以上是关于查找表中的任何日期是不是在两个日期之间的主要内容,如果未能解决你的问题,请参考以下文章
在包含多个开始和日期列表的表中查找日期,如果找到则返回默认值