두개의 조건을 만족하는 회원 검색 0 7 2,782

by 택코르 [SQL Query] Sql 쿼리문 [2023.07.06 10:43:58]


회원  등록번호 

A.  1

B.  2

A.  2

이렇게 있을때 만들고 싶은것은

등록번호가 1, 2 둘다 가지고 있는 A 회원을 찾고 이를

Case when 으로 컬럼을 만들고 싶습니다. 

 

결과물 ex

 

회원 등록번호 구분

A. 1. 1&2

A. 2. 1&2

 

쉬운거 같은데 잘모르겠습니다....

by 마농 [2023.07.06 11:22:58]

1. 등록번호는 (1,2) 두개 뿐인가요?
- 만약 다른 번호도 있다면? (1,2,3) 3개를 가진 회원은 출력 대상이 되는지? 제외 대상이 되는지?
- 출력 대상이 된다면? 출력은 1&2 가 되어야 하는지? 1&2&3 이 되어야 하는지?
2. DB 종류 및 버전은 어떻게 되나요?
- DB 종류 및 버전에 따라 구현 방법이 다를 수 있습니다.


by 택코르 [2023.07.06 11:56:08]

대댓글 다는법을 몰라서 댓글로 적는 점 죄송합니다. 

 

1. 등록번호는 총 3개 입니다.

그래서 결국 만들때는 

-- 1. 2. 3. 1&2. 1&3. 2&3. 1&2&3 이렇게 만들 예정이었습니다.

만약 1&2&3을 만족하는 회원은 1&2에도 1&3에도 2&3에도 중복으로는 출력되고 싶습니다. 

2. DB는 Hive 사용중인데 버전은 잘 모르겠습니다.


by 마농 [2023.07.06 13:35:00]

제가 사용해 보지 않응 DB 라 잘 모르겠네요.
CASE 구문은 되는 것 같으니. 기본적인 문법만(GROUP BY, CASE) 사용해서 풀어보겠습니다.
아래는 MariaDB 에서 테스트한 내용입니다.
 

-- MariaDB --
WITH t AS
(
SELECT 'A' cd, 1 no
UNION ALL SELECT 'A', 2
UNION ALL SELECT 'B', 2
UNION ALL SELECT 'C', 1
UNION ALL SELECT 'D', 3
UNION ALL SELECT 'E', 1
UNION ALL SELECT 'E', 3
UNION ALL SELECT 'F', 2
UNION ALL SELECT 'F', 3
UNION ALL SELECT 'G', 1
UNION ALL SELECT 'G', 2
UNION ALL SELECT 'G', 3
)
SELECT *
  FROM (SELECT cd
             , SUBSTR(CONCAT( MAX(CASE no WHEN 1 THEN '&1' ELSE '' END)
                            , MAX(CASE no WHEN 2 THEN '&2' ELSE '' END)
                            , MAX(CASE no WHEN 3 THEN '&3' ELSE '' END)
                            ), 2, 9) gb
          FROM t
         GROUP BY cd
        ) a
 WHERE gb = '1&2'
;

 


by 택코르 [2023.07.06 14:08:54]

이렇게 하면 출력값은

Cd gb
A 1&2
   

이렇게 나오지 않을까요?

서브쿼리에 No를 넣으면 results 0이 나왔습니다.

 

------원하는 출력값--------

Cd No Gb
A 1 1&2
A 2 1&2

 


by 제로벅 [2023.07.06 14:56:42]

A 회원이 1,2,3 등록번호를 다 가지고 있으면 어떻게 출력되어야 하나요? 


by 택코르 [2023.07.06 15:17:32]

구분

1 , 2, 3, 1&2, 1&3, 2&3, 1&2&3에 모두 한번씩 들어가야 합니다.


by 마농 [2023.07.06 16:14:44]

이 부분이 제가 제일 먼저 질문 드린 부분이었는데 답변이 모호해서...
1,2,3 모두 가진 회원은 어떤 조건이 들어오든 다 나와야 한다는 건가요?

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