小编典典

如何在Oracle的CLOB列上使用GROUP BY?

sql

我正在尝试将GROUP BY功能与oracle中的MAX结合起来。我阅读了许多文档,试图弄清楚如何通过Oracle格式化我的请求,该方法总是返回:

ORA-00979:“不是按表达式分组”

这是我的要求:

SELECT A.T_ID, B.T, MAX(A.V) 
FROM bdd.LOG A, bdd.T_B B
WHERE B.T_ID = A.T_ID
GROUP BY A.T_ID
HAVING MAX(A.V) < '1.00';

有小费吗 ?

编辑 似乎与我的字段的数据类型有些棘手的部分。

  • T_IDVARCHAR2
  • A.VVARCHAR2
  • B.TCLOB

阅读 190

收藏
2021-03-23

共1个答案

小编典典

经过一些修复后,似乎主要问题在于 group by

您必须在SELECT和中使用相同的表GROUP BY

我还仅使用CLOB的子字符串来使其工作。工作要求是:

    SELECT TABLE_A.ID,
       TABLE_A.VA,
       B.TRACE
FROM
(SELECT A.T_ID ID,
          MAX(A.V) VA
   FROM BDD.LOG A
   GROUP BY A.T_ID HAVING MAX(A.V) <= '1.00') TABLE_A,
                                                                BDD.T B
WHERE TABLE_A.ID = B.T_id;
2021-03-23