ORA-00937: - “不是单组组功能”

时间:2016-12-13 15:07:03

标签: sql oracle group-by distinct

我有一个选择

select distinct
    min(trunc(ALL_SUBS_DAY.CHARGE_AMT * SUP.SHARE_USAGE, 4)) + (ALL_SUBS_DAY.CHARGE_AMT - sum(trunc(ALL_SUBS_DAY.CHARGE_AMT * SUP.SHARE_USAGE, 4))) as CHARGE_AMT
from table names;

当我尝试运行它时,我得不到单组组功能。 如果我这样做

select 
    min(trunc(ALL_SUBS_DAY.CHARGE_AMT * SUP.SHARE_USAGE, 4)) + (ALL_SUBS_DAY.CHARGE_AMT - sum(trunc(ALL_SUBS_DAY.CHARGE_AMT * SUP.SHARE_USAGE, 4))) as CHARGE_AMT
from table names
group by SUBS_DAY.CHARGE_AMT, SUP.SHARE_USAGE;

它有效。是不是应该像群体一样工作?我真的需要列出每一列还是有办法不这样做?

1 个答案:

答案 0 :(得分:1)

问题在于select: function (event, ui) { $("#site_client_first").val(ui.item.label); // what the user sees $("#site_client_first").attr('data-realValue', ui.item.value); // value is hidden return false; } 您不是按它分组,也不是使用聚合函数。

$("#site_client_first").attr('data-realValue');

选择不同     min(trunc(ALL_SUBS_DAY.CHARGE_AMT * SUP.SHARE_USAGE,4))+( ALL_SUBS_DAY.CHARGE_AMT - sum(trunc(ALL_SUBS_DAY.CHARGE_AMT * SUP.SHARE_USAGE,4)))为CHARGE_AMT 来自表名;

只有当您按所有列/表达式分组并选择所有列/表达式时,

ALL_SUBS_DAY.CHARGE_AMT才会像group by一样工作。 -

+ (ALL_SUBS_DAY.CHARGE_AMT - sum(

=

DISTINCT

您的第一个查询返回单行,因为您没有按任何方式聚合,这使得select distinct a,b,c,d,e from t; 无意义。