2013-07-02 3 views
2

에 의해 그룹과 SQL 쿼리에서 오류가 발생했습니다 :나는 다음과 같은 SQL 쿼리 (MSSQL 2005) 실행하려고

select top 20 d_date, date1, date2 
from reestr_calculated 
where reestr_id=2 
group by date2 
order by date2 desc 

을 나는 다음과 같은 오류 얻을 :

Column 'reestr_calculated.d_date' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

아무도 알고 있나요을 그 오류를 어떻게 처리 할 수 ​​있습니까?

답변

0

GROUP BY을 사용하면 여러 행이 하나의 행으로 축소됩니다. 그룹의 해당 행을 표시할지 결정하려면 집계 함수를 사용해야합니다.

마찬가지로 MIN() 또는 SUM() 또는 기타. 이처럼

:

select top 20 MIN(d_date), MAX(date1), date2 
from reestr_calculated 
where reestr_id=2 
group by date2 
order by date2 desc 

또는 같은

:

select top 20 d_date, date1, date2 
from reestr_calculated 
where reestr_id=2 
group by d_date, date1, date2 
order by date2 desc 
+0

하여 그룹의 다른 열을 포함 할 필요! 고마워요! – Konstantinos

3

집계 함수를 사용하지 않는 한 SELECT에있는 모든 열 이름은 GROUP BY이어야합니다. 그러므로 group1에 날짜 1을 추가하십시오.

0

당신은 각 date2 값을 하나 개의 행을 반환하는 의미 date2에 의해 그룹화하고 있습니다. 각 date2 값은 복수 d_date 또는 date1 값을 가질 수 있으므로 SQL은 각 값에 대해 반환 할 값을 알지 못합니다.

오류가 말한대로

, 당신 중 하나는 집계 함수 ( MAX(), MIN(), AVG() 등) 또는 이해 절

관련 문제