2009-09-02 6 views
4

나는 카디 전 제품을 사용하고 싶지 않은 쿼리를 작성하려고합니다. 어떤 Type_Code에는 여러 가지 설명이 있기 때문에 First 함수를 사용할 예정이었고 달러를 곱셈하지 않으려했습니다.SQL : "First"기능에 대한 대안?

Select 
Sum(A.Dollar) as Dollars, 
A.Type_Code, 
First(B.Type_Description) as FstTypeDescr 
From 
Totals A, 
TypDesc B 
Where 
A.Type_Code = B.Type_Code 
Group by A.Type_Code 

주어진 코드에 대한 설명 중 하나만 골라주고 싶습니다. (어느 것이 든 상관하지 않습니다.) FIRST를 사용하려고 할 때 다음 오류가 발생합니다.

[IBM][CLI Driver][DB2/AIX64] SQL0440N No authorized routine named "FIRST" of type "FUNCTION" 

다른 방법이 있습니까?

답변

6

First() 대신 MIN()을 사용하십시오.

+0

모르겠다. 텍스트 필드에 MIN을 사용할 수 있습니다. 감사합니다. – Dan

1

이 기능의 실제 이름을 잊어 버렸지 만 실제로 하위 쿼리에 참여할 수 있도록 만들 수 있습니다. oxbow_lakes 알 수 및 사용과 같은 그 하위 쿼리에, 당신이 할 수있는 "상위 1"

뭔가 같은 : 첫째

select * from table1 
inner join (select top 1 from table2) t2 on t2.id = table1.id 
2

() SQL 표준이 아니다. 나는 그것이 작동하는 데이터베이스 제품을 잊지 만, 대부분의 SQL 엔진에서는 그렇지 않다. Recursive가 지적한 것처럼, min()은 여기에서 목적을 위해 동일한 것을 수행합니다. 다른 점은 쿼리의 인덱스와 다른 구성 요소에 따라 다르므로 많은 경우 레코드를 검색해야만 최소값을 찾을 수 있습니다. - 그리고 내 자신의 많은 - 당신이 정말로 원하는 모든 것은 일치합니다. 그 질문을하는 표준 SQL 방법을 모르겠습니다. SQL은 현실 세계의 문제를 가능한 한 신속하고 효율적으로 해결하고자하는 실제 컴퓨터 괴짜가 아니라 수학자들이 일련의 이론을 엄격하게 적용하고자 설계되었습니다.