안녕하세요 하위데이터가 있을때는 하위데이터 조회 질문 드립니다. 0 4 654

by 빠바 [2016.09.29 11:55:38]


안녕하세요. SELECT문 질문드립니다.

 

데이터가 

고객사        메인고객사

A                Y

B                Y

C                Y

C-1             N

C-2             N

C-3             N

이렇게 있을때

조회가

A

B

C-1

C-2

C-3 이 되고싶습니다.

 

하위 고객사가 있을경우 메인고객사는 표시하지 않겠다는 뜻입니다.

 

괜찮은 방법이 있을까요?

by 빠바 [2016.09.29 12:15:59]

메인고객사와 하위고객사에 연관성이 한개 더 있다면 

 

메인고객사는 10100 처럼 5번째자리가 0으로 끝나고

하위고객사는 10101 처럼 앞에 4자리는 같고 5번째자리가 1 2 3 순서로 바뀝니다,


by 랑에1 [2016.09.29 12:36:56]
WITH T AS (
SELECT 'A' 고객사, 'Y' 메인고객사 FROM dual UNION ALL 
SELECT 'B' , 'Y' FROM dual UNION ALL
SELECT 'C' , 'Y' FROM dual UNION ALL
SELECT 'C-1' , 'N' FROM dual UNION ALL
SELECT 'C-2' , 'N' FROM dual UNION ALL
SELECT 'C-3' , 'N' FROM dual
)
SELECT 고객사, 메인고객사
FROM 
(
  SELECT T.*, COUNT(*) OVER(PARTITION BY SUBSTR(고객사, 1, 1)) cnt
  FROM T
)
WHERE (메인고객사 = 'Y' AND cnt = 1) OR (메인고객사 = 'N' AND cnt <> 1)
ORDER BY 고객사

 


by 도미노 같은 놈 [2016.09.29 13:08:18]

WITH T AS (
SELECT 'A---0' 고객사, 'Y' 메인고객사 FROM dual UNION ALL
SELECT 'B---0' , 'Y' FROM dual UNION ALL
SELECT 'C---0' , 'Y' FROM dual UNION ALL
SELECT 'C---1' , 'N' FROM dual UNION ALL
SELECT 'C---2' , 'N' FROM dual UNION ALL
SELECT 'C---3' , 'N' FROM dual
)
select 고객사, 메인고객사
	from (select substr(고객사, 5) m_code,
				substr(고객사, 1,4)||decode(메인고객사, 'N', 0) n_code,
				고객사,
				메인고객사
			from T)
	where CONNECT_BY_ISLEAF = 1
		start with m_code = 0
		connect by prior 고객사 = n_code
;

 

계층형 구조로 만들면 재밌겠다 싶어서 만들어 봤습니다. 


by 빠바 [2016.09.29 13:56:52]

두분다 답변채택을 못해드리네요.. 감사드립니다. 적용해보겠습니다

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