我有一个 Oracle 数据库表,其中
我在这个特定的表中有很多列,但我想根据下面描述的两列之间的计算得到结果
Project|Status
-------|--------
1 | Done
1 | Pending
2 | Done
我想获得待定项目的数量,例如,如果项目 1 的状态为待定,并且它在表中的任何位置都没有完成状态,那么它将是一个待定任务,但如果项目 1 的状态为待定,并且在任何其他行的表中也有完成状态,那么这将不是待处理任务,
我试过这个查询,但它返回的行同时具有待定和完成状态,
SELECT * FROM MYTABLE T
WHERE EXISTS
(SELECT 1 FROM MYTABLE WHERE Project = A.Project AND ROWID < A.ROWID AND
Status ='Done')
AND T.Status!='Done' AND T.Status='Pending'
@更新 我在此列中还有其他状态值,如“部分完成”和“已请求”,因此我只想获得那些在整个表中只有待处理状态而没有“完成”状态的项目。
最佳答案
如果您想获得未决项目并且没有其他状态“完成”,请使用以下查询。
SELECT * FROM MYTABLE T
WHERE T.Status='Pending'
AND NOT EXISTS --excluding projects with 'done' status
(SELECT 1 FROM MYTABLE A WHERE A.Project = T.Project AND
A.Status ='Done')
如果您想获得待处理项目的总数,请使用以下脚本。
SELECT COUNT(*) FROM MYTABLE T
WHERE T.Status='Pending'
AND NOT EXISTS
(SELECT 1 FROM MYTABLE A WHERE A.Project = T.Project AND
A.Status ='Done')
关于sql - ORACLE 根据两列查找计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39914002/