SQL SELECT语句与内部联接的日期时间问题
我有一个查询,它不返回任何记录,因为当它们是查询中的内部联接时,它不能匹配指定的grp.EffectiveDate。数据库是SQL ServerSQL 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
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