SQL SELECT语句与内部联接的日期时间问题

SQL SELECT语句与内部联接的日期时间问题,sql,sql-server,datetime,Sql,Sql Server,Datetime,我有一个查询,它不返回任何记录,因为当它们是查询中的内部联接时,它不能匹配指定的grp.EffectiveDate。数据库是SQL Server SELECT grp.GroupID, grp.GroupNumber, grp.Name, grp.Location, grp.GroupTypeID, grp.DivisionID, grp.MasterGroupID, grp.EffectiveDate, grp.TerminationDate, crt.[ContractNumber], p

我有一个查询,它不返回任何记录,因为当它们是查询中的内部联接时,它不能匹配指定的grp.EffectiveDate。数据库是SQL Server

SELECT grp.GroupID, grp.GroupNumber, grp.Name, grp.Location, grp.GroupTypeID, grp.DivisionID, 
grp.MasterGroupID, grp.EffectiveDate, grp.TerminationDate, crt.[ContractNumber], pln.[PBPNumber], div.SiteName, src.Name as SourceName 
FROM [Group] grp 
    INNER JOIN [IndividualPlanDemographic] idp ON grp.GroupID = idp.IndividualPlanDemographicID 
    INNER JOIN [Plan] pln ON idp.PlanID = pln.PlanID 
    INNER JOIN [Contract] crt ON pln.ContractID = crt.ContractID 
    INNER JOIN [Division] div ON grp.DivisionID = div.DivisionID 
    INNER JOIN [SourceSystem] src ON div.SourceSystemID = src.SourceSystemID 
WHERE 1 = 1 
AND grp.EffectiveDate = '1/1/2015 12:00:00 AM' AND grp.GroupTypeID = '2' ORDER BY ContractNumber
但是,如果我只是查询主“组”表,它将返回我根据所有条件查找的正确记录

SELECT grp.GroupID, grp.GroupNumber, grp.Name, grp.Location, grp.GroupTypeID, grp.DivisionID, 
grp.MasterGroupID, grp.EffectiveDate, grp.TerminationDate
FROM [Group] grp 
WHERE 1 = 1 
AND grp.EffectiveDate = '1/1/2015 12:00:00 AM' AND grp.GroupTypeID = '2' 

为什么我的查询在使用多个表时不起作用?我特别引用了列(grp.EffectiveDate)之前的表别名,所以我不知道还有什么不对。一如既往,提前感谢您的帮助。

也许您的
内部连接之一应该是
左侧外部连接。使用联接时,如果希望返回父记录时包含/不包含子记录,并且模式允许这样做(可为null的FK),则应保留外部联接

SELECT grp.GroupID, grp.GroupNumber, grp.Name, grp.Location, grp.GroupTypeID, grp.DivisionID, 
grp.MasterGroupID, grp.EffectiveDate, grp.TerminationDate, crt.[ContractNumber], pln.[PBPNumber], div.SiteName, src.Name as SourceName 
FROM [Group] grp 
    INNER JOIN [IndividualPlanDemographic] idp ON grp.GroupID = idp.IndividualPlanDemographicID 
    INNER JOIN [Plan] pln ON idp.PlanID = pln.PlanID 
    INNER JOIN [Contract] crt ON pln.ContractID = crt.ContractID 
    --THE GROUP IS NOT REQUIRED TO BE IN A DIVISION RELATIONSHIP
    LEFT OUTER JOIN [Division] div ON grp.DivisionID = div.DivisionID 
    LEFT OUTER JOIN [SourceSystem] src ON div.SourceSystemID = src.SourceSystemID 
WHERE 1 = 1 
AND grp.EffectiveDate = '1/1/2015 12:00:00 AM' AND grp.GroupTypeID = '2' ORDER BY ContractNumber

也许您的
内部联接
之一应该是
左外部联接
。使用联接时,如果希望返回父记录时包含/不包含子记录,并且模式允许这样做(可为null的FK),则应保留外部联接

SELECT grp.GroupID, grp.GroupNumber, grp.Name, grp.Location, grp.GroupTypeID, grp.DivisionID, 
grp.MasterGroupID, grp.EffectiveDate, grp.TerminationDate, crt.[ContractNumber], pln.[PBPNumber], div.SiteName, src.Name as SourceName 
FROM [Group] grp 
    INNER JOIN [IndividualPlanDemographic] idp ON grp.GroupID = idp.IndividualPlanDemographicID 
    INNER JOIN [Plan] pln ON idp.PlanID = pln.PlanID 
    INNER JOIN [Contract] crt ON pln.ContractID = crt.ContractID 
    --THE GROUP IS NOT REQUIRED TO BE IN A DIVISION RELATIONSHIP
    LEFT OUTER JOIN [Division] div ON grp.DivisionID = div.DivisionID 
    LEFT OUTER JOIN [SourceSystem] src ON div.SourceSystemID = src.SourceSystemID 
WHERE 1 = 1 
AND grp.EffectiveDate = '1/1/2015 12:00:00 AM' AND grp.GroupTypeID = '2' ORDER BY ContractNumber

最终,这意味着与此日期和组类型匹配的行不包含所有内部联接到的表中的记录


您的数据库缺少预期的记录,或者您需要将其中一些内部联接改为左外部联接。

这最终意味着,与此日期和组类型匹配的行不包含内部联接到的所有表中的记录


您的数据库缺少预期记录,或者您需要将其中一些内部联接改为左外部联接。

它是什么类型的数据库?表结构,(最小)显示问题的示例数据,预期输出。这些是我最喜欢的一些东西@kometen SQL Server。我已经为您添加了标签。请记住在将来标记您的RDBMS。它可能与什么类型的数据库重复?表结构,(最小)显示问题的示例数据,预期输出。这些是我最喜欢的一些东西@kometen SQL Server。我已经为您添加了标签。请记住在将来标记您的RDBMS