마농님 글 다시 올려요.답변줌 부탁드립니다. 0 1 366

by 많이부족합니다 [SQL Query] [2021.11.29 12:33:10]


20211129_122642217.jpg (141,581Bytes)

제가 파일첨부해서

예시문 샘플로 짯구요

요점은

다섯개의 컬럼에서 맥스값을 구하고

그 맥스값을 출력하면되는데

근데 문제는 뭐냐면

샘플에 보시면 6보다 작은 맥스값은

5로 출력이 정상적인데

만약 조건은 5보다 작은값으로 하면

4가 나와야 하는데

널로 출력이 되어 버립니다.ㅜㅜ

여기서 어떻게 짜야할지 모르겠어요ㅜㅜ

 

DB는 알티베이스 하위 완전 옛날 버전입니다.

by 마농 [2021.11.29 12:47:36]

조건이 틀렸네요.
- 원하는 조건 : 6보다 작은 것 중에 최고
- 작성된 조건 : 최고가 6보다 작은 것

SELECT GREATEST( CASE WHEN a < 5 THEN a ELSE 0 END
               , CASE WHEN b < 5 THEN b ELSE 0 END
               , CASE WHEN c < 5 THEN c ELSE 0 END
               , CASE WHEN d < 5 THEN d ELSE 0 END
               , CASE WHEN e < 5 THEN e ELSE 0 END
               ) v
  FROM (SELECT 1 a, 2 b, 3 c, 4 d, 5 e FROM dual) a
;
SELECT MAX(v) v
  FROM (SELECT CASE lv WHEN 1 THEN a
                       WHEN 2 THEN b
                       WHEN 3 THEN c
                       WHEN 4 THEN d
                       WHEN 5 THEN e
                END v
          FROM (SELECT 1 a, 2 b, 3 c, 4 d, 5 e FROM dual) a
         CROSS JOIN
               (SELECT 1 lv FROM dual
                UNION ALL SELECT 2 FROM dual
                UNION ALL SELECT 3 FROM dual
                UNION ALL SELECT 4 FROM dual
                UNION ALL SELECT 5 FROM dual
                ) copy_t
        ) a
 WHERE v < 5
;

 

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