今天寫SQL語句的時候
select sum(a.plate),sum(a.qty),sum(a.qly),a.materialtypeid,b.name,b.spec, from fw_eqpres_materialinventory a,fw_eng_material b where a.materialtypeid=b.sysid
and b.name like '%XX%'
group by a.materialtypeid
的時候提示 not a single group by function
可是寫
select sum(a.plate),sum(a.qty),sum(a.qly),a.materialtypeid,b.name,b.spec from fw_eqpres_materialinventory a,fw_eng_material b where a.materialtypeid=b.sysid
and b.name like :name
a.materialtypeid,b.name,b.spec
又沒有錯,所以找了相關資料解釋以下:
select state_cd,avg(sales) from customer group by state_cd;
大多數人一開始就明白groupby語句的意思,但使用時卻常有麻煩。必須確保group by在每個語句中引用正確的表列數目。提示當使用group by時,未在group by部分用到的表列在select部分出現時必須使用分組函數。
再考慮一下忽略使用分組函數可能引發的問題。若是執行了語句:
select last_name,state_cd,sum(sales) from customer
group by last_name;
將返回如下錯誤:
ERRORatline1:
ORA-00979:notaGROUPBYexpression
這是因爲在state_cd表列中沒有使用group by子句,所以必須加上分組函數。換句話說,必須使用max()、min()、sum()、count()或avg()函數。若是對於指定的表列找不到想使用的合適的分組函數,那麼就將該表列移到group by子句中去。