2017-11-27 6 views
0

SQL에 익숙하지 않으므로 답변이 확실하지만 어디서나 찾을 수 없으므로 죄송합니다. 그래서 같은 category.Below에있는 제품의 범주 이름, 설명 및 평균 가격을 선택하려면 2 테이블의 그림입니다. 문제는 내가 그것을 보여줄 수있는 방법을 찾을 수 없습니다 설명입니다. (가 8 개 범주는 모든 종류는 1 설명이)집계 함수 또는 GROUP BY 절에 포함되어 있지 않기 때문에 선택 목록에서 열이 올바르지 않습니다. [ntext]

이것은 내가 지금까지 만든 코드이지만 오류가 있습니다

SELECT c.CategoryName,c.Description,avg(p.UnitPrice) 
FROM Categories AS c 
INNER JOIN Products AS p ON c.CategoryID=p.CategoryID 
GROUP BY c.CategoryName 

오류 :

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

내 나쁜 영어를 유감으로합니다./

+0

이 오류는 정확한 문제를 알려줍니다. 당신은 선택 옆에 목록에 설명이 있지만 절에 의해 그룹에 있지 않아요 – Matt

+0

나는 그것도 시도했지만 그것의 ntext 때문에 말합니다 : 텍스트, ntext 및 이미지 데이터 형식을 비교하거나 정렬 할 수 없습니다. 사용하는 경우를 제외하고는 IS NULL 또는 LIKE 연산자입니다. –

+0

ntext 및 사물에 대한 오류는 사용자가 그룹화 할 수 없으며 다른 오류임을 의미합니다. 그러나'SELECT'와'GROUP BY' 컬럼을'CAST (c.Description AS VARCHAR (???))'와 같이 집합 할 수있는 데이터 타입으로 변환하면 해결할 수 있습니다. 허용되는 길이이거나 'MAX'를 사용하십시오. – Matt

답변

0

(n)text은 집계 또는 창 함수에서 사용할 수 없습니다. 또한 SQL Server 2008 이후로 더 이상 사용되지 않습니다 (2005 년을 올바르게 기억한다면). 실제로 (n)varchar(MAX)을 사용해야합니다.

당신이 정말로 후 처음 집계를 수행해야합니다, 다음 (n)text 열의 값 검색 (n)text를 사용하는 "가"경우

WITH Averages AS (
    SELECT p.CategoryID, avg(p.UnitPrice) AS AveragePrice 
    FROM p.CategoryID 
    GROUP BY p.CategoryID) 
SELECT C.CategoryName, C.Description, A.AveragePrice 
FROM Averages A 
    JOIN Categories C ON A.CategoryID = C.CategoryID; 

(참고,이 안된 DDL 및 샘플 데이터 부족으로 인해)

+0

문제는 해결되었지만 어쨌든 고맙습니다! –

+2

@Larnu, CTE에서 조인이 필요하다고 확신하지 않습니다. – SQLCliff

+0

어디서 사용 하시겠습니까? 그래도 답을 받아 들일 것입니다. –