아래 코드를 실행하는 동안 다음 오류가 표시됩니다.SQL - GROUP BY 절 내에서 SELECT 문을 사용할 수 있습니까?
GROUP BY 절의 목록별로 그룹에 사용 된 식에서 집계 또는 하위 쿼리를 사용할 수 없습니다.
CREATE table #TBL
(
Name varchar(1028)
)
INSERT INTO #TBL VALUES('John')
INSERT INTO #TBL VALUES('Jack')
SELECT
CASE WHEN FirstName in (SELECT * FROM #TBL)
then 'A' else 'B' end,
COUNT(id) as Employees
from Database
GROUP BY CASE WHEN FirstName in (SELECT * FROM #TBL)
then 'A' else 'B' end
원래 아이디어는 쿼리의 시작에서 테이블을 만드는 것이 었습니다, 그래서 대신 각 GROUP BY의 이름을 정의하는 쿼리 자체에 사용될 수있다 (#TBL SELECT * FROM).
편집 : 다른 이름으로 그룹화하고 싶습니다. 예를 들어 John이 내 목록에있는 유일한 이름 인 경우 group by 절을 GROUP BY CASE FirstName = 'John', 'A'else 'B'end로 편집 할 수 있습니다. 하지만 더 많은 이름을 추가하고 싶습니다. 매번 대신 쿼리에서 한 번 수행하려고합니다. 위의 쿼리는 쿼리에서 사용하는 많은 임시 테이블 중 하나입니다.
어떻게 할 수 있습니까? ?
감사합니다.
아니, 나는 그렇게 생각하지 않는다. Group by 절 안에 select를 쓸 수 없습니다. BTW : - 왜 그렇게하고 싶어? –
다른 이름으로 그룹화하고 싶습니다. 예를 들어, John이 내 목록에있는 유일한 이름 인 경우 group by 절을 편집하여 FirstName = 'John', 'A'else 'B'end로 그룹을 편집 할 수 있습니다. 하지만 더 많은 이름을 추가하고 싶습니다. 그리고 위의 쿼리는 쿼리에서 사용하는 많은 임시 테이블 중 하나 일 뿐이므로 각 시간 대신 쿼리에서 한 번 수행하려고합니다. – Shay