SQL查询无法正常工作

时间:2017-06-13 15:24:05

标签: sql oracle

我在尝试运行以下查询时似乎遇到此错误:

SELECT 
to_char(EFFECTIVE_DT,'YYYY-MM') as YYYYMM,
--EFFECTIVE_DT,
AH01_PAYMENT_STATUS_CTD,
TSYS_ACCT_ID
FROM OIS_TSYS.AH_CYCLE_HIST 
WHERE 1=1
AND EFFECTIVE_DT BETWEEN '01-MAY-2017' AND '31-MAY-2017'
GROUP BY 2
ORDER BY 1

错误:ORA-00979:不是GROUP BY表达式

我正在尝试按日期分组,因为我每天都会获得每个帐户的结果。

Result set:
65589   N   03-MAY-17
65590   S   03-MAY-17
65591   M   03-MAY-17
65592   F   03-MAY-17
65617   G   03-MAY-17

任何帮助都是惊人的。

最佳, Saad的

2 个答案:

答案 0 :(得分:0)

当您按"分组2"时,所有其他列必须具有聚合函数,如(sum,avg,min,max,..)

" 1 = 1"很没用了

答案 1 :(得分:0)

要获得所需结果,请使用以下查询: 当你在任何查询中应用group by子句时,如果select子句中有多个colum,除了sum,count,min,max等聚合函数之外,你不能只在group by子句中放置一列。所以在你的情况下你必须把你在select子句中选择的所有三列放在组中。

    SELECT 
    TSYS_ACCT_ID,
    AH01_PAYMENT_STATUS_CTD,
    to_char(EFFECTIVE_DT,'YYYY-MM') as YYYYMM
    FROM OIS_TSYS.AH_CYCLE_HIST 
    WHERE EFFECTIVE_DT BETWEEN '01-MAY-2017' AND '31-MAY-2017'
    GROUP BY 
    TSYS_ACCT_ID,
    AH01_PAYMENT_STATUS_CTD,
    to_char(EFFECTIVE_DT,'YYYY-MM')
    ORDER BY 1