많은수의 컬럼값을 비교해야할때.. 0 3 1,056

by 스파르타 [SQL Query] [2019.06.12 15:17:07]


WITH t1 AS
(
SELECT           '아이템1' item, 'A' GRP, '10011A' ID, '2' VAL1, '2' VAL2, '2' VAL3 FROM dual
UNION ALL SELECT '아이템1',      'A',     '10012A',     '3', '3', '3' FROM dual
UNION ALL SELECT '아이템1',      'B',     '10012B',     '3', '3', '2' FROM dual
UNION ALL SELECT '아이템1',      'A',     '10013B',     '1', '2', '3' FROM dual
)

휴대폰이라 예제위 테이블에서 컬럼값 val1 val2 val3

만 기입했습니다 실제는 val1 ~ val30 이구요.

item = 아이템1 and grp가 A 인 로우중에서

val1 ~val30  값을 다뒤져서 일치되는게있으면 해당로우의 id 값을 찾고 싶은건데요 혹시 이게 쿼리로 가능할까요?  일치값은 2로 한다고 치고요.

10011A, 10013B  요두개가 찾아져 2개행이 나오겠네요.

찾아야할 비교 컬럼이 너무많아서 30개라..

이럴땐 어떻게 처리하는지 ㅠㅠ

 

 

by 랑에1 [2019.06.12 15:49:42]
-- val값이 한자리라는 가정하에..
WHERE item = '아이템1'
AND   grp = 'A'
AND   val1 || val2 || val3 ... || val30 LIKE '%2%'
-- AND   INSTR(val1 || val2 || val3 ... || val30, '2') > 0

 


by 마농 [2019.06.12 19:10:17]
SELECT *
  FROM t1
 WHERE item = '아이템1'
   AND grp  = 'A'
   AND '2' IN (val1, val2, val3)
;

SELECT *
  FROM t1
 WHERE item = '아이템1'
   AND grp  = 'A'
   AND '2'  = ANY(val1, val2, val3)
;

 


by 스파르타 [2019.08.08 10:29:02]

랑에님 ..

마농님 감사합니다... ^^

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