我收到一条消息,说表达式是无效的标识符。我还收到一条消息,说单个group by无效。请推荐一个替代方案。
我有以下Oracle SQL语句:
SELECT SUM(CASE
WHEN PDRVARIANCE >= -1 then '1'
WHEN PDRVARIANCE <-1 then '0'
END)
/ count(*)
* 100 as PercentCompliance ,
TO_CHAR (ACTUALFINISHDATE,'MM/YY') AS DCSMONTH
FROM ACTIVITIES
WHERE DCSMONTH IS NOT NULL
GROUP BY DCSMONTH现有的数据应该是这样的……
Variance Month
20 10/12
3.2 10/12
-4.2 10/12
-27.8 10/12
13 11/12
3 11/12
-1.2 12/12
-2 12/12期望的结果是为每个差异条件做一个“真”与“假”的百分比,并按月分组,并显示为...
Percent Month
50 10/12
100 11/12
0 12/12发布于 2012-11-21 13:58:02
不能在定义列别名的同一范围内使用列别名。
您要么必须用GROUP BY TO_CHAR (ACTUALFINISHDATE,'MM/YY')替换GROUP BY DSCMONTH (对where子句执行相同的操作),要么将您的查询包装在另一个查询中。
喜欢,
select dcsmonth, sum(data) / count(*) * 100 percentcompliance
from (
SELECT CASE WHEN PDRVARIANCE >= -1 then 1
WHEN PDRVARIANCE <-1 then 0 END data,
TO_CHAR (ACTUALFINISHDATE,'MM/YY') AS DCSMONTH
FROM ACTIVITIES
WHERE ACTUALFINISHDATE IS NOT NULL
)
GROUP BY DCSMONTHhttps://stackoverflow.com/questions/13482691
复制相似问题