[英]Group By in Oracle
How is group by used in oracle? 在Oracle中如何使用group by? I have been trying for hours and I still dont know why i am getting this error. 我已经尝试了几个小时,但我仍然不知道为什么我收到此错误。 The original sql is written in pervasive. 原始sql是无处不在的。 I am trying to convert it into oracle. 我正在尝试将其转换为oracle。
The error I am getting is : 我得到的错误是:
ORA-00904: "SHA": invalid identifier
00904. 00000 - "%s: invalid identifier"
This is my query: 这是我的查询:
SELECT
CASE
WHEN (pch + pk) > 999999999
THEN 'j-9999 and OVER'
WHEN (pch + pk) >= 1000000
THEN 'i-1, < 999'
END AS SHA,
SUM(pch + pk) AS TOTALSHA
FROM hold, pos
WHERE hold.ho = pos.pho AND (pch + pk) > 0
GROUP BY SHA;
You can't group on an output value. 您无法对输出值进行分组。 Repeat the expression: 重复表达式:
SELECT
CASE
WHEN (pch + pk) > 999999999
THEN 'j-9999 and OVER'
WHEN (pch + pk) >= 1000000
THEN 'i-1, < 999'
END AS SHA,
SUM(pch + pk) AS TOTALSHA
FROM hold, pos
WHERE hold.ho = pos.pho AND (pch + pk) > 0
GROUP BY CASE
WHEN (pch + pk) > 999999999
THEN 'j-9999 and OVER'
WHEN (pch + pk) >= 1000000
THEN 'i-1, < 999'
END;
Alternatively, calculate the value in a subquery and group the result from that: 或者,在子查询中计算值并将结果分组:
SELECT
SHA,
SUM(pch + pk) AS TOTALSHA
FROM (
SELECT
CASE
WHEN (pch + pk) > 999999999
THEN 'j-9999 and OVER'
WHEN (pch + pk) >= 1000000
THEN 'i-1, < 999'
END AS SHA,
pch,
pk
FROM hold, pos
WHERE hold.ho = pos.pho AND (pch + pk) > 0
) AS X
GROUP BY SHA
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.