안녕하세요...질문좀 하겟습니다... 0 9 1,426

by 기본충실 [SQL Query] mssql 계층형 통계 쿼리 [2019.03.25 09:40:29]


MS-SQL 에서 계층형 쿼리가 잘 안되서 질문 올립니다...

계층형으로 COUNT해서 뿌려줘야하는데 

잘 안되더라구여...

현재 

 

TID PID
K0 K1
K0 K2
K0 K3
K1 K184
K184 0
K2 K5
K3 0

이런식으로 데이터가 있구요...(K0 인게 최상위 입니다,,,)

게층형으로 어떻게 COUNT를 해야하나요...?

by 마농 [2019.03.25 10:32:47]

원하시는 결과표를 올려주세요.


by 기본충실 [2019.03.25 11:22:35]

원하는 결과표는..

  COUNT() 수량
K1  
K2  
K3  

입니다...재귀호출시 COUNT()를 못해서 문제가 나는거 같습니다..해결좀 해주세요 ㅠㅠㅠ


by 기본충실 [2019.03.25 11:25:24]
WITH CTE AS
(
   -- 최하위 레벨을 인식하기 위한 방법 강구 필요
   SELECT A.TID, A.PID, A.TLEVEL
     FROM EDM_TREE A
    WHERE A.TID='K0'
    AND A.T_CATEGORY='K'
UNION ALL
   SELECT A.TID, A.PID, A.TLEVEL
     FROM EDM_TREE A
     JOIN CTE B ON A.PID= B.TID
     WHERE A.T_CATEGORY='K'
)

SELECT A.* 
  FROM CTE A 
  WHERE A.TLEVEL >='2' 

이렇게 까진 햇는데요...분류별로 카운트를 해야해서...문제가 됩니다 ㅠㅠ


by 마농 [2019.03.25 12:20:26]

결과표에 수치가 없네요?


by 기본충실 [2019.03.25 12:48:38]

수치가...COUNT()로 해서 동적으로 계산되게끔 만들어야해서요....

 

  COUNT() 수량
K1 2
K2 1
K3 0

 

제가 드린 데이터로는 이렇게 나와야 할거같아요


by 마농 [2019.03.25 13:11:50]

질문을 구체적으로 명확하게 해주세요.
- 무작정 카운트를 하고 싶다는 불분명한 표현?
- 결과표를 보여 줬지만 공란으로 보여준다거나?
- 결과표는 채웠지만. 건수가 왜 이렇게 나오는지 설명도 없고?
- 이렇게 나와야 할 것 같아요? -> 본인도 어떻게 나와야 할지 모르겟다는 건가요?


by 기본충실 [2019.03.25 13:23:10]

지금 현재...

  LEVEL TID   PID
K 2 30 전기 K0
K 3 31 조립도 30
K 3 50 배관도 30
K 3 51 배면도 30
K 3 52 일정도 30
K 3 53 취부도 30
K 3 54 구조도 30
K 3 55 복선도 30
K 3 56 배선도 30
K 2 57 계장 K0
K 3 58 조립도 57
K 3 79 일정도 57
K 3 80 취부도 57
K 3 81 구조도 57
K 3 82 복선도 57
K 3 83 배선도 57
K 3 3 상세도 1
K 3 15 철골도 1
K 3 16 계단도 1
K 3 17 축조도 1
K 2 18 기계 K0
K 3 19 조립도 18
K 3 27 제작도 18
K 3 28 부품도 18
K 3 29 배관도 18
K 2 1 토건 K0
K 3 2 단면도 1

 

이런 트리형테 데이터가 있는데요..

 

K0인 상위에서 COUNT를 하고싶습니다.

 

결과표 

  수량
토건 1
전기 8
기계 4
계장 6

 

입니다.

 

 


by 기본충실 [2019.03.25 13:53:56]

아...죄송합니다...
 

제가 이직한지 얼마안되서...

 

업무설명을 못듣고 쿼리 작성하니라...

 

헤맷네요...

 

매핑테이블 찾아서 다시 질문하겟습니다...


by 마농 [2019.03.25 15:41:56]

토건의 경우 자식이 5개가 있는데? 결과표엔 1만 표시되어 있네요? 왜죠?
혹시 레벨은 3레벨이 최대인가요? 4레벨은 없는지?
혹시 4레벨이있을 때 카운트는 어떤식으로 되어야 하나요?

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