首页 > 解决方案 > 在同一查询中求和并连接列数据

问题描述

我正在使用 Oracle DB 并有以下查询引发错误:

ORA-00937: 不是单组组函数

询问:

select sum(ct.TOT_CT), ct.CREAT_TS, ev.EVENT
    from REF_CT ct
    inner join EVENT ev on ev.EVENT_TYPE_ID = ct.EVENT_TYPE_ID
    where ct.TX = 'SomeText';

如果我尝试单独访问以下内容,它会起作用。如分别调用 sum、ct.CREAT_TS 等。

问题似乎是在此查询中调用 sum。我计划在一个对象中捕获输出(如果相关,Java)。我希望查询输出如下。有可能实现这一目标吗?

CREAT_TS                      EVENT          sum(ct.TOT_CT)
2019-04-02 01:33:46.227000    SOME_EVENT 1   8
2019-04-02 02:56:14.530000    SOME_EVENT 2

在给出答案后,得到以下结果,其中总和值按列拆分:

CREAT_TS                      EVENT          sum(ct.TOT_CT)
2019-04-02 01:33:46.227000    SOME_EVENT 1   2
2019-04-02 02:56:14.530000    SOME_EVENT 2   6

标签: sqloracle

解决方案


您需要包含group by子句。

select sum(ct.TOT_CT), ct.CREAT_TS, ev.EVENT
    from REF_CT ct
    inner join EVENT ev on ev.EVENT_TYPE_ID = ct.EVENT_TYPE_ID
    where ct.TX = 'SomeText'
    group by ct.CREAT_TS, ev.EVENT;

推荐阅读