我有一个Project表,其中包含ProjectNo,Task,Subtask和status列。对于给定的ProjectNum,如果至少1并且并非所有子任务都处于状态91或16,则任务正在进行中。如何在单个查询中获取给定项目的进行中任务?
答案 0 :(得分:1)
此查询有一个子查询,用于计算给定任务的所有子任务以及具有给定状态的所有子任务。然后,这是一个简单的案例陈述,以查看任务是否正在进行中。
files/list_folder/continue
子查询具有硬编码with prj as
( select task
, count(subtask) as tasks
, sum(case when status in ( 91, 16) then 1 else 0 end) as active
from project
where projectno = 23
group by task
)
select task
, case when active > 0 and active < tasks then 'Y' else 'N' end as in_progress
from prj
/
。显然你会想要参数化,但你将如何做到这将取决于你正在使用的客户。
请注意,您的要求意味着无法区分未启动的任务(没有给定状态的子任务)和已完成的任务(所有子任务都具有给定状态)。