亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ORA-00979不是按表達式分組

ORA-00979不是按表達式分組

互換的青春 2019-05-27 13:19:40
ORA-00979不是按表達式分組我通過以下查詢獲得ORA-00979:SELECT cr.review_sk, cr.cs_sk, cr.full_name,tolist(to_char(cf.fact_date, 'mm/dd/yyyy')) "appt",cs.cs_id, cr.tracking_numberfrom review cr, cs, fact cfwhere cr.cs_sk = cs.cs_skand UPPER(cs.cs_id) like '%' || UPPER(i_cs_id) || '%'and row_delete_date_time is nulland cr.review_sk = cf.review_wk (+)and cr.fact_type_code (+) = 183050GROUP BY cr.review_sk, cr.cs_sk, cf.fact_date, cr.tracking_numberORDER BY cs.cs_id, cr.full_name;我找不到在同一查詢中同時包含GROUP BY和ORDER BY子句的任何示例。我嘗試一次一個地從組中刪除每個字段,但仍然得到相同的錯誤。
查看完整描述

4 回答

?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

你必須把的所有列SELECT的GROUP BY或使用的壓縮結果為單一值(如對他們的功能MIN,MAX或SUM)。


一個簡單的例子來理解為什么會發生這種情況:想象一下,你有一個像這樣的數據庫:


FOO BAR

0   A

0   B

并在運行SELECT * FROM table GROUP BY foo。這意味著數據庫必須返回單行作為結果,第一列0才能完成,GROUP BY但現在有兩個值bar可供選擇。你期望哪個結果 - A或者B?或者數據庫是否應該返回多行,違反了合同GROUP BY?


查看完整回答
反對 回復 2019-05-27
?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

GROUP BY子句中包含所有SELECT不是組函數參數的表達式。


查看完整回答
反對 回復 2019-05-27
?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

太糟糕了,Oracle有這樣的局限性。當然,不在GROUP BY中的列的結果將是隨機的,但有時您需要它。愚蠢的Oracle,你可以在MySQL / MSSQL中做到這一點。

但是有一個解決Oracle的工作:

雖然以下行不起作用

SELECT unique_id_col, COUNT(1) AS cnt FROM yourTable GROUP BY col_A;

您可以使用類似下面的0來欺騙Oracle,以使您的列保持在范圍內,但不能將其分組(假設這些是數字,否則使用CONCAT)

SELECT MAX(unique_id_col) AS unique_id_col, COUNT(1) AS cnt 
FROM yourTable GROUP BY col_A, (unique_id_col*0 + col_A);


查看完整回答
反對 回復 2019-05-27
  • 4 回答
  • 0 關注
  • 826 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號