【发布时间】:2019-08-04 05:47:05
【问题描述】:
我有一个名为 dbo.ObjectOwner 的多对多表,其中包含以下列:
ObjectId | OwnerId | StartDate |EndDate
ObjectId、OwnerId 不是主键,Startdate 和 Enddate 指的是 Object 归 Owner 的日期。
我正在尝试执行的查询应该返回所有 ObjectId 对于每个 ObjectId,它没有 EndDate 为空的关联记录。即,返回当前没有所有者的所有对象。
有点像
foreach(objectId in dbo.ObjectOwner)
if (
doesnotexist (records where ObjectId = objectid and EndDate is null)
)
{
add this objectid to the select table
}
我查看了 group by 和 have,但以下脚本返回所有记录
SELECT oo.ObjectId
FROM dbo.ObjectOwner oo
GROUP BY oo.ObjectId
HAVING NOT EXISTS (
SELECT 1
FROM dbo.ObjectOwner
WHERE dbo.ObjectOwner.EndDate = null
)
提前致谢
【问题讨论】:
-
如果您添加示例数据和预期结果可能会更清楚
-
@skeffin 查看修改后的答案。
标签: sql sql-server tsql aggregate-functions