2013-08-01 4 views
2

나는 이것이 쉬운 선택이라는 것을 알고 있지만, 그것을 알아내는 행운이 없다. 테이블에 고객 그룹 코드 필드가 있고 각기 다른 문자 2 ~ 6 세트의 개수를 얻으려고합니다. 나의 과거 FoxPro에 경험에 간단한하위 문자열 카운트 선택

select distinct substr(custcode,2,5), count (*) from a group by 1

작동 것이다, 그러나 이것은 SQL 서버 쿼리에서 작업 표시되지 않습니다. 오류 메시지는 그룹에서 숫자 참조를 사용하여 싫어서 custcode로 변경했음을 나타 냈지만 카운트가 고유 한 것이므로 하나만 있다고 가정 할 때 카운트는 각각 1을 반환합니다. 카운트를 count(distinct substring(custcode,2,5))으로 변경하고 첫 번째 고유 한 하위 문자열을 제거하면 몇 개의 다른 코드가 있는지 계산됩니다. 누군가 내가 여기서 잘못하고있는 것을 지적 할 수 있습니까? 감사. , SQL 서버에서는이 ORDER BY 절에 열 별칭/번호를 사용할 수 있습니다

select substr(custcode,2,5), count (*) 
from a 
group by substr(custcode,2,5) 

:

+0

'count (별개의 부분 문자열 (custcode, 2,5)), substring (custcode, 2,5)'시도했습니다. –

답변

4

DISTINCTGROUP BY 방금 ​​GROUP BY 원하는, 중복, 당신은 당신이 선택하는 같은 일을 GROUP BYGROUP BY에는 없습니다.

e. ORDER BY 1은 첫 번째로 선택한 열에 따라 정렬하지만 많은 경우 별칭/열 이름을 사용하여 열 색인을 사용하는 것이 좋지 않은 것으로 간주됩니다.

+0

"색인"이 완전히 모호하기 때문에 제거했습니다. 서수 위치와 같은 다른 용어를 사용하십시오. –

+0

감사합니다. 나는 그것이 내 앞에 있다는 것을 알았습니다 ... – user1572700

+0

@AaronBertrand "서수 순위"가 "열 지수"보다 더 일반적으로 생각하십니까? 나는 문언 변경에 대해 개방적이지만 OP가 그룹화에서 열 인덱스를 사용하려고 시도 했음이 분명합니다. 어쩌면 단지 "열 번호"일까요? –