조회되는 데이터가 없을 때 질문입니다. 0 4 1,489

by 모델장윤주 [2016.01.18 13:34:13]


SELECT A, B, C

FROM TEST_TABLE

WHERE D = 'TEST'

 

그냥 기본적인 쿼리문에서

WHERE 조건절에 의해 TEST_TABLE에 조회되는 데이터가 없을 때

SELECT문에서 임의의 데이터를 가져올 수 있는 방법이 있나요 ?

 

SELECT 'asd' A, 'ddd' B, 'aa11' C 

FROM ... 처럼 .. 

 

방법이 있다면 검색을 무슨 키워드로 해야 저런 방법을 찾을 수 있나요 .. ? 

 

 

 

by 아발란체 [2016.01.18 14:36:59]
WITH T(val1, val2, val3) AS (
  SELECT 'ㄱ','ccc','dd33' FROM DUAL UNION ALL
  SELECT 'ㄴ','fff','ge22' FROM DUAL UNION ALL
  SELECT 'ㄷ','ccc','dd33' FROM DUAL UNION ALL
  SELECT 'A','ccc','dd33' FROM DUAL UNION ALL
  SELECT 'a','ccc','dd33' FROM DUAL UNION ALL
  SELECT 'B','ccc','dd33' FROM DUAL
)  
SELECT val1, val2, val3 FROM T WHERE val1 = '1' 
UNION 
SELECT
  DECODE(COUNT(1), 0, 'asd', MAX(val1)),
  DECODE(COUNT(1), 0, 'ddd', MAX(val2)),
  DECODE(COUNT(1), 0, 'aa11', MAX(val3))
FROM
  T
WHERE
  (val1, val2, val3) IN(SELECT val1, val2, val3 FROM T WHERE val1 = '1' AND ROWNUM = 1)

 


by 아발란체 [2016.01.18 14:38:37]

없으면 1건이 출력되나, 있으면 아래 교집합 테이블에 의해 중복 제거됩니다.

근데... 보통 이런 것은 이렇게 짜면 로직이 직관적이지 않습니다.

1쿼리가 아닌 2쿼리가 되더라도 분기하여 분리하여 작성하는 것이 보다 좋은 방법이라고 생각합니다.


by 마농 [2016.01.18 20:52:17]

by 아발란체 [2016.01.18 21:31:27]

얼.. 이리 좋은 방법이..... = ㅁ =);

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