[SQL] 오라클 : 같은 행의 다른 컬럼에서 선택 최대 값
SQL오라클 : 같은 행의 다른 컬럼에서 선택 최대 값
전체 질문은 제목에 꽤 많이 있습니다. 테이블의 각 행에 대해 나는 컬럼의 서브 세트의 최대 값을 선택하고 싶습니다.
예를 들어,이 테이블에서
name m1 m2 m3 m4
A 1 2 3 4
B 6 3 4 5
C 1 5 2 1
결과는 것
name max
A 4
B 6
C 5
쿼리는 호환 오라클 8i를해야합니다.
해결법
-
==============================
1.이 테스트 데이터를 감안할 때 ...
이 테스트 데이터를 감안할 때 ...
SQL> select * 2 from your_table 3 / NAME M1 M2 M3 M4 ---- ---------- ---------- ---------- ---------- A 1 2 3 4 B 6 3 4 5 C 1 5 2 1 SQL>
... 간단한 GREATEST () 호출은 원하는 결과를 줄 것이다 :
SQL> select name 2 , greatest(m1, m2, m3, m4) as the greatest_m 3 from your_table 4 / NAME THE_GREATEST_M ---- -------------- A 4 B 6 C 5 SQL>
인수가 널인 경우 가장 큰 (가) NULL을 반환합니다. 이 문제는 다음 사용 NVL ()의 경우 결과를 왜곡하지 않습니다 디폴트 값을 제공합니다. 예를 들면, 모든 값이 음수가 될 수 없다면 ....
SQL> select name 2 , greatest(nvl(m1,0), nvl(m2,0), nvl(m3,0), nvl(m4,0)) as the greatest_m 3 from your_table 4 / NAME THE_GREATEST_M ---- -------------- A 4 B 6 C 5 SQL>
-
==============================
2.GREATEST 사용 또한 가능 NULL 년대를 처리
GREATEST 사용 또한 가능 NULL 년대를 처리
SELECT name, GREATEST(NVL(m1,0), NVL(m2,0), NVL(m3,0), NVL(m4,0)) AS "Max" FROM yourtable
입력:
name m1 m2 m3 m4 A 1 2 3 4 B 6 3 4 5 C 1 5 2 1
산출:
NAME Max A 4 B 6 C 5
SQL 바이올린 : http://sqlfiddle.com/#!4/ae268/7/0
입력:
name m1 m2 m3 m4 A 1 2 3 null B 6 null 4 5 C 1 5 2 1
산출:
NAME Max A 3 B 6 C 5
SQL 바이올린 : http://sqlfiddle.com/#!4/b1c46/1/0
from https://stackoverflow.com/questions/2928102/oracle-select-maximum-value-from-different-columns-of-the-same-row by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] MySQL의 : 한 테이블에서 레코드를 카운트 한 다음 다른 업데이트 (0) | 2020.06.29 |
---|---|
[SQL] SQL ORDER 수치가 문자 (0) | 2020.06.29 |
[SQL] PHP에서 히어 닥 내에서 변수를 사용 (SQL 연습) (0) | 2020.06.29 |
[SQL] 포스트 그레스 - 기능이 개 배열의 교회법을 반환? (0) | 2020.06.29 |
[SQL] 데이터베이스 테이블에서 계산 된 열 목록을 가져 오기 (SQL 서버) (0) | 2020.06.29 |