GREATEST 함수 사용시 칼럼명도 같이가져오는 방법 0 4 769

by 초난강 [SQL Query] [2017.08.02 10:03:41]


안녕하세요. GREATEST함수를 쓸경우 

SELECT GREATEST(A, B, C, D) FROM TABLE 이라고 했을경우 C칼럼에 가장 큰수가 있다고 할경우 칼럼명도 같이 뽑을수 있을까요? 고수님들의 가르침을 부탁드립니다. 

by 마농 [2017.08.02 10:09:07]

혹시 가장 큰 값이 두개 이상 이면? 결과는 어떻게? (예,  1, 3, 2, 3)


by 주킹 [2017.08.02 10:16:19]

select case greatest(max(a),max(b),max(c),max(d)) when max(a) then 'a' when max(b) then 'b' when max(c) then 'c' when max(d) then 'd' end col_name,  greatest(max(a),max(b),max(c),max(d)) from test_b;

큰 값 중복은 고려 안했을 경우는 작성해봅니다 ㅋ

 

row당이면

 select case greatest(a,b,c,d) when a then 'a' when b then 'b' when c then 'c' when d then 'd' end col_name,  greatest(a,b,c,d) from test_b;


by 초난강 [2017.08.02 10:20:10]

값이ㅜ같은 경우는 같은 값중에 어느 값을 가져와도 상관없습니다.


by 마농 [2017.08.02 10:23:40]
WITH t AS
(
SELECT 1 id, 1 a, 3 b, 2 c, 3 d FROM dual
UNION ALL SELECT 2, 1, 2, 3, 4 FROM dual
)
SELECT id
     , a, b, c, d
     , GREATEST(a, b, c, d) g
     , DECODE(GREATEST(a, b, c, d), a, 'A', b, 'B', c, 'C', d, 'D') f
  FROM t
;

 

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