SQL查询;如果子记录 = 标准则排除记录
SQL Query; Exclude record if subrecord = criteria
我正在使用 Report Builder 生成有关事件记录的报告。每个事件记录都可以有一个或多个与之关联的分配记录。分配存储在不同的 table(任务)中并加入父记录 ID(事件 table)。
按照当前配置,我得到一份报告,其中显示符合我的条件的每个事件 ID 和所有关联的分配。
我想排除任何分配为 "Property Systems" 的记录。如果我在语句中放入一个排除这些记录的语句,我会得到所有满足我的其他条件的记录,但是分配给 "Property Systems" 的记录被排除在外。
示例:如果记录 4 有 3 个关联的作业。如果这些分配中的任何一个(任务负责人)= "Property Systems" 我想排除整个记录。
我想知道如何排除整个记录,而不仅仅是我现在得到的作业。
SELECT
Incident.IncidentNumber
,Incident.Status
,Incident.CreatedDateTime
,Incident.OwnerTeam [Incident Owner]
,Incident.Service
,Task.AssignedDateTime
,Task.OwnerTeam [Task Owner]
,Task.ParentRecordNumber
,Task.AssigneeFullName
FROM
Incident
CROSS JOIN Task
WHERE
Incident.IncidentNumber = Task.ParentRecordNumber
AND Incident.Status IN (N'Active', N'Waiting')
AND Incident.Service LIKE N'Property - Two-Way'
AND Incident.OwnerTeam LIKE N'Corporate & Property Service Desk'
---- AND Task.OwnerTeam <> N'Property Systems'
与父记录关联的多个记录的术语是什么?子记录?
您需要再次检查任务 table。
SELECT
I.IncidentNumber
,I.Status
,I.CreatedDateTime
,I.OwnerTeam [Incident Owner]
,I.Service
,T.AssignedDateTime
,T.OwnerTeam [Task Owner]
,T.ParentRecordNumber
,T.AssigneeFullName
FROM
Incident I
JOIN
Task T ON I.IncidentNumber = T.ParentRecordNumber
WHERE
Incident.Status IN (N'Active', N'Waiting')
AND Incident.Service LIKE N'Property - Two-Way'
AND Incident.OwnerTeam LIKE N'Corporate & Property Service Desk'
AND NOT EXISTS (SELECT *
FROM Task T2
WHERE
T2.OwnerTeam = N'Property Systems' AND
T2.ParentRecordNumber = I.IncidentNumber)
还要注意正确的 JOIN 语法
我正在使用 Report Builder 生成有关事件记录的报告。每个事件记录都可以有一个或多个与之关联的分配记录。分配存储在不同的 table(任务)中并加入父记录 ID(事件 table)。
按照当前配置,我得到一份报告,其中显示符合我的条件的每个事件 ID 和所有关联的分配。
我想排除任何分配为 "Property Systems" 的记录。如果我在语句中放入一个排除这些记录的语句,我会得到所有满足我的其他条件的记录,但是分配给 "Property Systems" 的记录被排除在外。
示例:如果记录 4 有 3 个关联的作业。如果这些分配中的任何一个(任务负责人)= "Property Systems" 我想排除整个记录。
我想知道如何排除整个记录,而不仅仅是我现在得到的作业。
SELECT
Incident.IncidentNumber
,Incident.Status
,Incident.CreatedDateTime
,Incident.OwnerTeam [Incident Owner]
,Incident.Service
,Task.AssignedDateTime
,Task.OwnerTeam [Task Owner]
,Task.ParentRecordNumber
,Task.AssigneeFullName
FROM
Incident
CROSS JOIN Task
WHERE
Incident.IncidentNumber = Task.ParentRecordNumber
AND Incident.Status IN (N'Active', N'Waiting')
AND Incident.Service LIKE N'Property - Two-Way'
AND Incident.OwnerTeam LIKE N'Corporate & Property Service Desk'
---- AND Task.OwnerTeam <> N'Property Systems'
与父记录关联的多个记录的术语是什么?子记录?
您需要再次检查任务 table。
SELECT
I.IncidentNumber
,I.Status
,I.CreatedDateTime
,I.OwnerTeam [Incident Owner]
,I.Service
,T.AssignedDateTime
,T.OwnerTeam [Task Owner]
,T.ParentRecordNumber
,T.AssigneeFullName
FROM
Incident I
JOIN
Task T ON I.IncidentNumber = T.ParentRecordNumber
WHERE
Incident.Status IN (N'Active', N'Waiting')
AND Incident.Service LIKE N'Property - Two-Way'
AND Incident.OwnerTeam LIKE N'Corporate & Property Service Desk'
AND NOT EXISTS (SELECT *
FROM Task T2
WHERE
T2.OwnerTeam = N'Property Systems' AND
T2.ParentRecordNumber = I.IncidentNumber)
还要注意正确的 JOIN 语法