我试着将两列并列,并使用表达式分组,但它不起作用。
SELECT employee_id,
employee_name,
employee_unique
FROM
(SELECT a.id AS employee_id,
(a.first_name
|| a.last_name) AS employee_name,
b.employee_unique
FROM A a
INNER JOIN b
ON a.id=b.employee_id
GROUP BY a.id,
b.employee_unique,
(a.first_name
|| a.last_name)
);
"不能用 "是什么意思?对我来说是行得通的(不过,由于我没有你的表,我用了Scott的 EMP
和 DEPT
但其他的都差不多)。) 如果它不正确,你应该解释一下。什么 是错误的。如果你想让我们使用你的数据,请提供 CREATE TABLE
和 INSERT INTO
样本数据。
SQL> select employee_id,
2 employee_name,
3 employee_unique
4 from
5 (select a.empno as employee_id,
6 a.ename || a.job as employee_name,
7 b.dname as employee_unique
8 from emp a
9 inner join dept b
10 on a.deptno=b.deptno
11 group by a.empno,
12 b.dname,
13 a.ename || a.job
14 );
EMPLOYEE_ID EMPLOYEE_NAME EMPLOYEE_UNIQU
----------- ------------------- --------------
7654 MARTINSALESMAN SALES
7876 ADAMSCLERK RESEARCH
7566 JONESMANAGER RESEARCH
7698 BLAKEMANAGER SALES
7844 TURNERSALESMAN SALES
7369 SMITHCLERK RESEARCH
7788 SCOTTANALYST RESEARCH
7900 JAMESCLERK SALES
7902 FORDANALYST RESEARCH
7782 CLARKMANAGER ACCOUNTING
7934 MILLERCLERK ACCOUNTING
7499 ALLENSALESMAN SALES
7521 WARDSALESMAN SALES
7839 KINGPRESIDENT ACCOUNTING
14 rows selected.
SQL>
不过,由于没有真正的分组(这里没有聚合),你可以使用 distinct
(不含 group by
子句)并得到相同的结果。
select employee_id,
employee_name,
employee_unique
from
(select distinct
a.empno as employee_id,
a.ename || a.job as employee_name,
b.dname as employee_unique
from emp a
inner join dept b
on a.deptno=b.deptno
);
Oracle数据重述一般使用指南了解使用Oracle数据重述的使用指南很重要。
不要在SQL语句中的GROUP BY子句中使用的SQL表达式中包含任何经过编辑的列。甲骨文不支持这样做,并会引发 ORA-00979:不是 GROUP BY 表达式错误。发生这种情况是因为在内部,SELECT列表中的表达式必须被Data Redaction修改,但这导致在处理GROUP BY子句时不再找到它(当前没有被Data Redaction更新),导致这个非预期的错误信息。
不要在SQL语句中的DISTINCT子句和ORDER BY子句中同时使用的SQL表达式中包含任何经过编辑的列。Oracle不支持这样做,并引发一个错误。ORA-01791: not a SELECTed expression. 发生这种情况的原因是,内部必须通过Data Redaction修改SELECT列表中的表达式,但这导致在处理GROUP BY子句时不再找到它,从而导致了这个非预期的错误信息。
一个ORA-28094: 如果一个查询涉及一个被删节列的UNION,并且UNION的每个分支没有相同的删节策略,就会引发SQL构造不被数据重述支持的错误。为了避免出现ORA-28094错误,请确保查询具有以下属性。
当UNION中的列有一个节录策略时,UNION的每个分支中对应的列必须使用一个节录策略,它的所有属性都有相同的值。
函数类型
功能参数或REGEXP参数
政策表述
启用标志
它可以是不同的节录策略,但所有这些属性必须是相同的。
在内联视图中,UNION不能有子查询或任何涉及到删节列的SQL表达式。
母题。使用Oracle数据重删与Oracle数据库功能