2014-03-05 2 views
0

를 포함하지 않는 쿼리를 실행 I가 내가 GROUP BY 절에 & o.object_type을 o.ea_guid 포함하면 이제 오류 메시지가 "you tried to execute a query that does not include the specified expression"지정된 집계 함수 오류 메시지

SELECT o.ea_guid as CLASSGUID, o.object_type as CLASSTYPE, o.name, COUNT(o.name) as NameCount 
FROM t_object as o 
GROUP BY o.name 
HAVING (COUNT(o.name)>1) 

을 반환 다음 쿼리, 결과가 반환되지 않습니다.

무엇이 잘못 되었나요?

답변

2

COUNT (o.name)은 집계입니다. 다른 속성은 그렇지 않습니다. 비 집계를 표시하려면 GROUP BY 절에 넣어야합니다. 이렇게하면 세 개의 필드 CLASSGUID, CLASSTYPE 및 NAME의 고유 한 각 조합에 대한 행 수가 표시됩니다. 이것은 당신이 마음에 무엇을하지 않을 수 있습니다

SELECT 
    o.ea_guid as CLASSGUID, 
    o.object_type as CLASSTYPE, 
    o.name as NAME, 
    COUNT(*) as NameCount 
FROM 
    t_object as o 
GROUP BY 
    o.ea_guid, 
    o.object_type, 
    o.name 

HAVING 
    (COUNT(*)>1) 

...

+0

에서 바보 같다

SELECT o.ea_guid as CLASSGUID, o.object_type as CLASSTYPE, o.name, COUNT(o.name) as NameCount FROM t_object as o GROUP BY o.ea_guid , o.object_type , o.name HAVING (COUNT(o.name)>1) 

합니다. 집계 함수 "'의 일부로 지정된 표현식 'Name'을 포함하지 않는 쿼리를 실행하려고하는 메시지가 나타납니다. GROUP BY 절에 포함 시키면 아무런 결과도 반환되지 않습니다 – PeanutsMonkey

+0

죄송합니다. 오타가있었습니다. 빠른 변경을했는데 GROUP BY 절에'o.name '을 추가하는 것을 잊었습니다. 나는 이제 그것을 위에서 추가했습니다. 원인으로 인해 오류가 발생하는 이유를 알고 있습니까? –

0

쿼리는 두 가지 오류가 있습니다

o.ea_guid as CLASSGUID, o.object_type as CLASSTYPE 

는 결과가 엔터프라이즈 설계자 모델의 특정 유물에 참조 될 것이라고 의미를 , Enterprise Architect의 집계 쿼리에는 사용할 수 없습니다. 사용

SELECT o.name, COUNT(o.name) as NameCount 
FROM t_object as o 
GROUP BY o.name 
HAVING (COUNT(o.name)>1) 

또는 선택한 모든 부가 요소가 GROUP BY 절에 있어야합니다 : 중 하나가 작동하지 않습니다이 경우