SQL- 使用过滤器加入相同 Table

SQL- Join Same Table with Filters

我有一个包含 2 列的 table(跟踪器); (ID 和状态)。我想检索一个没有批准状态的 ID 列表,但是状态可以从待定状态变为批准状态,并且不会删除原始数据。请参阅下面的示例和期望的结果。

追踪器Table:

ID Status
123 Pending
123 Approved
456 Pending
678 Denied
894 Approved

期望的结果:

ID Status
456 Pending
678 Denied

123 不存在,因为第二个状态是 'Approved',894 不存在,因为 'Approved'

中唯一的状态

按照如下思路思考:

Select ID
FROM Tracker b
WHERE Status = 'Approved'

Right Join

Select ID
FROM Tracker a

USING ID

您可以使用聚合:

select t.id
from tracker t
group by t.id
having sum(case when t.status = 'Approved' then 1 else 0 end) = 0;
SELECT T.ID,T.STATUS
FROM YOUR_TABLE AS T
WHERE NOT EXISTS
(
   SELECT 1 FROM YOUR_TABLE AS T2 WHERE T.ID=T2.ID AND T2.STATUS='APPROVED'
 )

试试这个 SQL。

SELECT t.id
       ,t.status
FROM tracker t
GROUP BY id
HAVING sum(
    CASE t.status
        WHEN 'Approved' THEN 1
        ELSE 0
    END
) = 0
;