다음 select 문을 감안할 때 : 나는 또한 추가 필드로 c.RowID을 선택하고 싶은T-SQL - 선택하여 그룹의 용어 또는 집계 기능이 있어야
Select t.name, SUM(st.row_count) as row_count
From sys.dm_db_partition_stats st
join sys.tables t on t.object_id = st.object_id
join ClientUpdateConfig c on t.name = c.TableName
Where (index_id < 2) and schema_id = schema_id('dbo')
and t.type ='U'
group by t.name
합니다. 쿼리가 그대로 작동하지만 내가 1과 같이 변경 한 경우 :
Select t.name, SUM(st.row_count) as row_count, c.RowID as current_row
다음과 같은 에러가 발생합니다
나는 집계 함수의 값을 선택을해야 할 것입니다 왜Msg 8120, Level 16, State 1, Line 1 Column 'ClientUpdateConfig.RowID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
사람이 설명 할 수 (I 'm이라고 가정) 또는 그룹을 선택하려면? 이 제한 사항을 이해하지 못합니다. 어쩌면 이것이 일어나는 이유를 이해할 수 있다면 쿼리 디자인을 조정할 수 있습니다.
'GROUP BY t.name, c.RowID'를 추가 할 수 없습니까? 오류 메시지는 아주 자명합니다. 선택 목록의 항목이 집계가 아닌 경우 GROUP BY도 고려해야합니다. RowID가 중복되어 있고 하나만 원할 경우 SQL Server에 원하는 값 (보통 MIN 또는 MAX)을 알려줘야합니다. –
사람들이 관계형 DB에 저장하는 것이 가장 어려운 작업 중 하나는 집계입니다. @ W00te,'GROUP BY'를 사용할 때 출력 행당 여러 소스 행을 선택합니다. 출력 행당 여러 개의 'RowID'값이 있기 때문에 원하는'RowId'를 지정해야합니다. – JNK
포인터를 가져 주셔서 감사합니다. 이것은 내가 몇 번 실행 한 것들 중 하나이지만, 데이터베이스를 오프 - 앤 - 온으로 사용하기 때문에 항상 그 사이에 1 년입니다. 항상 나를 물으러 다시 온다. –