group by 질문입니다. 0 7 1,319

by 보일듯말듯 [SQL Query] [2015.06.15 15:12:10]


code seq nm from to
20150615 1 홍길동 서울 부산
20150615 2 홍길동 부산 서울

 

이런 데이터를

select code, min(nm) nm, min(from) from, min(to) to

from test

group by code

쿼리를 하면 

20150615 /  홍길동 / 부산 / 부산

이렇게 결과가 나옵니다.

저는

20150615 /  홍길동 / 서울 / 부산

의 결과를 원하는데요 방법이 없을까요?

from 하고 to 의 값이 seq = 1 번의 결과를 보여주길 원하는데

min, max 함수를 써서 그런자 가나다 순의로 보여줍니다.

 

 

 

by DarkBee [2015.06.15 15:17:39]

code 별로 seq 새로 따지는건가요? 그렇다면

 

max ( decode ( seq, 1, from ) ), max ( decode ( seq, 1, to ) )


by 보일듯말듯 [2015.06.15 17:17:01]

감사합니다.


by 창조의날개 [2015.06.15 15:26:00]
WITH TT(code,	seq,	nm,	"from",	"to") AS (
SELECT '20150615',	1,	'홍길동',	'서울', '부산' FROM DUAL UNION ALL
SELECT '20150615',	2,	'홍길동',  '부산', '서울' FROM DUAL
)
SELECT CODE
     , MAX(NM)
     , MAX(DECODE(SEQ,1,"from")) "from"
     , MAX(DECODE(SEQ,1,"to")) "to"
FROM TT
GROUP BY CODE
;

 


by 창조의날개 [2015.06.15 15:30:22]

SELECT CODE
     , NM
     , "from"
     , "to"
FROM TT
WHERE SEQ = 1
;

이것도 위랑 결과는 같은데요..

GROUP BY를 해야 하는 이유가?

 


by 보일듯말듯 [2015.06.15 17:17:09]

감사합니다.


by 보일듯말듯 [2015.06.15 17:17:56]

예를들어 하나의 테이블로 설명드린것이고,

실제로 여러 테이블과 조인되어 있습니다.

^^

 


by swlee710 [2015.06.15 17:24:52]

select code,min(nm) nm,min(seq) seq
     , min("from") keep(dense_rank first order by seq) "from"
     , min("to") keep(dense_rank first order by seq) "to"
from  t
group by code;

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입