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

PL/SQL: Need to create conditional calculated columns in the select query

我正在尝试在 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,

改用CASE Expression

  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