首页 > 解决方案 > 子查询条件 (SQL)

问题描述

所以我想使用下面的脚本创建一个视图,问题是我想显示按季度分组的 2020 年的视图,因为您可以看到我有 2 个子查询使用to_char(ACTION_DATE,'YYYY') = 2020我只想返回季度结果,前提FileNO两个子查询中的 's 都来自同一个季度。

    SELECT Quarter,
    count(FileNO), avg(total_time),
    sum( case when Total_Time <= :T Then 1 Else 0 End ) Achieved,
    sum( case when Total_Time <= :T Then 1 Else 0 End ) / Count(FileNO) * 100 Precentage_Acheived
from 
 (SELECT to_Char(ACTION_DATE,'YYYYQ') as Quarter, FileNO, SUM(work_time) as total_time
    FROM F.MV
   WHERE 
   (FileNO, APP_no) IN
                 (SELECT FileNO, APP_no
                    FROM F.MV
                   WHERE    to_char(ACTION_DATE,'YYYY') = 2020
                            AND TASK_NAME = 'Lifting'
                            AND TO_TASK_NAME = 'Finish')
        AND DEPT_NAME = 'TempDep'
        AND WF_TASK_NAME = 'Lifting'
        and to_char(ACTION_DATE,'YYYY') = 2020
GROUP BY to_Char(ACTION_DATE,'YYYYq'),FileNO
)
GROUP BY Quarter

正确,如果我to_char(ACTION_DATE,'YYYYQ') = 20201用于两个 subquieres 在此处输入图像描述

但我得到的结果to_char(ACTION_DATE,'YYYY') = 2020是: 在此处输入图像描述

谢谢

标签: sqlgroup-bysubqueryconditional-statements

解决方案


我认为你想要的最里面的相关子句是:

(FileNO, APP_no) IN
             (SELECT mv2.FileNO, mv2.APP_no
              FROM F.MV mv2
              WHERE to_char(mv2.ACTION_DATE, 'YYYYQ') = to_char(mv.ACTION_DATE, 'YYYYQ')

推荐阅读