장태진 님이 쓰신 글 :
: 안녕하세요?
: 파이어버드 2.1을 사용하고 있습니다.
:
: tid color value1 value2 의 필드가 있고
: 1 2 3 5
: 3 1 1 1
: 2 1 1 2
: 2 1 1 1
: 1 4 2 3
: 3 1 1 2
:
: 위와 같은 되어 있을 때
:
: 아래와 같이 동일한 tid중에 value2의 값이 제일 큰 하나 씩만 취하여 리스트를 가져오고 싶습니다.
:
: tid color value1 value2
: 1 2 3 5
: 2 1 1 2
: 3 1 1 2
:
: 이를 위하여 예전에 mysql에서는
:
: select tid, color, value1, max(value2) from tbl group by tid
:
: 와 같은 식으로 구현했었는데
: firebird에서는 그룹으로 지정할 필드와 그룹함수를 제외한 필드를 사용하면 에러가 발생하는군요.
:
: 제가 원하는 리스트를 얻기 위해서 어떤 식으로 select 문을 작성해야 하는지 고수님들의 고견 부탁드립니다.
안녕하세요.
까막입니다.
SELECT T1.*
FROM TBL T1
INNER JOIN (SELECT Tid ,MAX(Value2) Value2
FROM TBL
GROUP BY Tid
) T2
ON (T1.Tid = T2.Tid AND
T1.Value2 = T2.Value2)
이렇게 하시면 원하시는 결과는 나타낼 수 있으실 겁니다.
단 Value2 가 중복이 될 경우는 결과값도 여러개가 나올 겁니다.
혼이 살아 있을까.... 대한민국.
|