具有多个条件的多个SQL计数

joh*_*ohn 5 sql sql-server select count

我一直在尝试优化从数据库中检索数据的方式,以便在用于软件开发的"仪表板"类型的页面上显示

我的数据库结构如下:

  • 要求表包含各种字段的所有各种要求,但重要的是REQ_ID作为关键字.
  • 任务包含的表可以包含多个任务,包括TASK_ID,TASK_NAME(DEV,TEST或RELEASE),TASK_STATUS(未启动,完成,已阻止),TASK_WINDOW(第1周,第2周,...等任务完成时)和链接返回与REQ_I的要求.例如,一个需求可能有多个开发任务,测试任务和发布任务,但是只有在与需求相关的所有开发任务完成时才能完成开发,否则它是不完整的

我想查询这两个表,为我提供一个结果集,其中包含单个查询中每个DEV任务窗口的DEV完成,测试完成和发布完成要求的编号.我目前正在执行多个查询,每个查询都包含子查询,然后使用PHP聚合结果,但总共需要15秒才能执行,任何人都可以帮我将其合并到一个查询中>

Joe*_*lli 11

SELECT r.REQ_ID, 
       SUM(CASE WHEN t.TASK_NAME = 'DEV' THEN 1 ELSE 0 END) AS DevComplete,
       SUM(CASE WHEN t.TASK_NAME = 'TEST' THEN 1 ELSE 0 END) AS TestComplete,
       SUM(CASE WHEN t.TASK_NAME = 'RELEASE' THEN 1 ELSE 0 END) AS ReleaseComplete
    FROM Requirements r
        INNER JOIN Tasks t
            ON r.REQ_ID = t.REQ_ID
    WHERE t.TASK_STATUS = 'Complete'
    GROUP BY r.REQ_ID
Run Code Online (Sandbox Code Playgroud)