Plsql PL/SQL:需要在select查询中创建条件计算列

Plsql PL/SQL:需要在select查询中创建条件计算列,plsql,conditional,where-clause,calculated-columns,Plsql,Conditional,Where Clause,Calculated Columns,我正在尝试在select查询中创建条件计算列。逻辑如下 Select FT.NAME, COUNT(DISTINCT PAGEID) as Total_Forms, COUNT(DISTINCT PAGEID WHERE FT."Column1?" =1) as Expected_forms, COUNT(DISTINCT PAGEID WHERE FT."Column1?" =1 AND FT."FORM STATUS" in ('C','I') as Ac

我正在尝试在select查询中创建条件计算列。逻辑如下

   Select  FT.NAME, 
    COUNT(DISTINCT PAGEID) as Total_Forms, 
    COUNT(DISTINCT PAGEID WHERE FT."Column1?" =1) as Expected_forms,
    COUNT(DISTINCT PAGEID WHERE FT."Column1?" =1 AND FT."FORM STATUS" in ('C','I') as Actual_forms,
    COUNT(DISTINCT DATAPAGEID WHERE FT."IS FORM EXPECTED1?" =1)/
    COUNT(DISTINCT DATAPAGEID WHERE FT."IS FORM EXPECTED1?" =1 AND FT."FORM STATUS" in ('C','I'))
     as Percentage
   FROM
       (Subquery) FT
   Group by FT.Name
我尝试过各种组合,但到目前为止没有任何效果。输出如下所示

  name      Total_forms   Expected_forms   Actual Forms  Percentage
  abc        943          811              781           96.54%
  pqr        900          800              600           75.00%
然而,我无法在PL/SQL查询中表达这一点。非常感谢您的帮助。

此语法错误:

COUNT(DISTINCT PAGEID WHERE FT."Column1?" =1) as Expected_forms,
改用:

  SELECT
    COUNT(DISTINCT PAGEID) as Total_Forms, 
    COUNT(DISTINCT CASE WHEN FT."Column1?" =1 THEN PAGEID END ) as Expected_forms,
    COUNT(DISTINCT CASE WHEN FT."Column1?" =1 AND FT."FORM STATUS" in ('C','I') 
                   THEN PAGEID END ) as Actual_forms,
    COUNT(DISTINCT CASE WHEN FT."IS FORM EXPECTED1?" =1 THEN DATAPAGEID  END)/
    COUNT(DISTINCT CASE WHEN FT."IS FORM EXPECTED1?" =1 AND FT."FORM STATUS" in ('C','I') 
                   THEN DATAPAGEID  END) as Percentage
   FROM
       (Subquery) FT
   Group by FT.Name