Plsql PL/SQL:需要在select查询中创建条件计算列
我正在尝试在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 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