2014-02-17 2 views
0

내 질문과 비슷한 12 가지가 넘는 스레드가 발견되었지만 경험 한 바가 전혀 표시되지 않았습니다. 고객/판매 거래를 추적하는 세 가지 데이터베이스가 있습니다. 나는 그들과 합류하고 문제없이 찾고있는 개별 트랜잭션을 얻을 수 있지만 vendor_name으로 결과를 그룹화하려고 할 때 vendor_name이 하나의 열 중 하나이지만 "ORA-00979 : GROUP BY 표현이 아닙니다"라는 메시지가 나타납니다. 선택 (나는 전제 조건이라고 생각했다). 나는 여기 진짜 간단한 것을 간과하고 있는가?"그룹화"실패 - ORACLE

select tran_date,product_name,quantity, 
     product_price,vendor_name,quantity*product_price as total 
from transactions 
join products using(product_num) 
    join customers using(vendor_id) group by vendor_name; 
+1

그룹 by by aggregates ... 여기에 어떤 데이터를 집계하려고합니까? 모든 열은 집계 또는 그룹 별 명세서의 일부 여야합니다. – Twelfth

+3

max, min, count, sum ... 집계 없음, 그룹 별 필요 없음. 어쩌면 주문하신 거예요? – xQbert

+0

'group by '이 필요한 이유와 그것을 사용하여 달성하고자하는 것을 지정하기 위해 질문을 업데이트했습니다. –

답변

1

"그룹화 기준"공급 업체 이름은 공급 업체 이름 하나당 하나의 레코드를 얻으려고한다는 것을 의미합니다. 따라서 다른 열을 그룹화/집계하는 방법을 지정해야합니다.

예를 "quantity*product_price"를 들어, 당신이 필요로의 번호, 부품 인 것이 될 것이다

select vendor_name, sum(quantity*product_price) 
from transactions 
join products using(product_num) 
    join customers using(vendor_id) 
group by vendor_name; 

질문에 전체 응답은 당신이 다른 열이 주어진 위해 그룹화 할 방법에 따라 달라집니다 공급 업체 이름.

+0

그게 내가 실제로 찾고 있던 바로 그 것이다. 나는 그룹화 된 열 이외의 열이 일종의 집계 열이어야한다는 것을 알아야했다. – user3043133