no |
part0 |
part1 |
part2 |
part3 |
1 |
최민수 |
주진오 |
이제범 | |
2 |
김미수 |
방길동 |
감사오 |
차훈이 |
3 |
방수리 |
이민호 |
방수리 |
박오성 |
4 |
최홍만 |
박사랑 |
최민수 |
이태미 |
고수님들의 조언 부탁드립니다.
테이블이 위와 같을때 part0 부터 part3 까지 최민수 라는 사람이 포함되어 있는 no 값을 찾고 싶습니다.
횡으로 여러 컬럼조회를 해야 되는경우 어떤 쿼리를 이용해야 될까요?
Comment 10
-
다은빈아빠
2013.06.13 17:05
-
건우아빠
2013.06.14 10:26
어렵다기 보다는 뭔가 심플한 방법이 없는가 고민 하고 계시는듯.
-
맨즈밤
2013.06.13 17:33
원하시는게 요거 맞나요?
SELECT NO
FROM TABLE_T
WHERE part0='최민수' OR part1='최민수' OR part2='최민수' OR part3='최민수' -
건우아빠
2013.06.14 10:24
각 컬럼별로 검색하는 쿼리를 union 으로 붙여도 되구요.
unpivot를 이용해서 로우화 시키고 조회를 하시는 방법도 가능 하고요...
계산필드를 이용해서 4개 필드를 합하는 필드를 생성하고 이 계산필드를 like, charindex등으로 조회 하시는 방법도 있을듯 합니다 .
자료의 내용이 얼마 안되면 맨즈밤님 답글을 참조 하시면 될듯 합니다.
-
이스트럭(강동운)
2013.06.14 14:50
안녕하세요~ cross join을 활용한 unpivot 입니다. 쿼리 참고하세요~!
WITH TBL AS
(
SELECT 1 AS NO,'최민수' AS PART0, '' AS PART1, '주진오' AS PART2,'이제범' AS PART3
UNION ALL SELECT 2,'김미수','방길동','감사오','차훈이'
UNION ALL SELECT 3,'방수리','이민호','방수리','박오성'
UNION ALL SELECT 4,'최홍만','박사랑','최민수','이태미'
)
SELECT
NO
, (CASE GROUPKEY
WHEN 1 THEN PART0
WHEN 2 THEN PART1
WHEN 3 THEN PART2
WHEN 4 THEN PART3
END)
FROM TBL
CROSS JOIN (SELECT 1 AS GROUPKEY UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) B
WHERE (CASE GROUPKEY
WHEN 1 THEN PART0
WHEN 2 THEN PART1
WHEN 3 THEN PART2
WHEN 4 THEN PART3
END) = '최민수'
감사합니다~~
-
건우아빠
2013.06.14 16:54
이 방법은 전에 외국사이트에 이런 방식으로 답글 함 달았다가 좋지못한 방식이라고
댓글 달렸던 방식... ㅋㅋㅋㅋ
-
이스트럭(강동운)
2013.06.14 17:44
아무래도 데이터 뻥튀기 된걸가지고 다시 가공하다보니.. 100만건이면..... 400만건이 되어서...
-
건우아빠
2013.06.14 18:31
아마 그런 의미로 그때도 이야기 했어요... ㅎㅎ
태클아님... 갑자기 생각이 나서요.. 오해 하지마세요...
-
이스트럭(강동운)
2013.06.14 18:35
오해 안했습니다 ^^;;; 잘지내시죠?? +_+
-
건우아빠
2013.06.14 18:37
네. 그런대로 지내고 있습니다. ㅋㅋ
23분이나 보셨는데....ㅠㅠ 어려운건가요?