database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 7224 게시물 읽기
No. 7224
계층 구조에서 설정 적용하기
작성자
GOOD:)LUCK
작성일
2020-07-10 13:56ⓒ
2020-07-10 13:57ⓜ
조회수
1,142

안녕하세요. 

A        
  B      
    D    
    E    
      H  
  C      
    F    
    G    

 

1.설정 : A부서 하위 포함   보너스 200을 지급 (A,200)

2. 설정: E부서 하위 포함  보너스 300을 지급(E,300)

 

 

1.설정,2설정을 적용해서 

A,B,C,E,F,G는 보너스 200을지급, E,H부서에는 300을 지급 하는 쿼리를 만들고 싶습니다.

힌트라도.. 주시면 정말 감사하겠습니다. 부탁드립니다.

 

 

 

 

이 글에 대한 댓글이 총 1건 있습니다.
CREATE TABLE #tbl
(
INX INT IDENTITY(1,1)
  , DEPT VARCHAR(10)
  , P_DEPT VARCHAR(10)
)
GO
 
 
DELETE #tbl
 
INSERT INTO #tbl
SELECT 'A' DEPT , '' P_DEPT UNION ALL
SELECT 'D' DEPT , 'B' P_DEPT UNION ALL
SELECT 'C' DEPT , 'A' P_DEPT UNION ALL
SELECT 'B' DEPT , 'A' P_DEPT UNION ALL
SELECT 'F' DEPT , 'C' P_DEPT UNION ALL
SELECT 'E' DEPT , 'B' P_DEPT UNION ALL
SELECT 'H' DEPT , 'E' P_DEPT UNION ALL
SELECT 'G' DEPT , 'C' P_DEPT  
 
 
DECLARE @val1 VARCHAR(10) ,@val2 VARCHAR(10)
SET @val1 = 'A';
SET @val2 = 'E';
 
WITH ctetbl
AS
(
SELECT 0 AS DEPTlevel
, DEPT
, P_DEPT
, INX 
, CONVERT(VARCHAR(100), ' / ' + DEPT ) AS path_DEPT
  FROM #tbl
WHERE P_DEPT = ''
UNION ALL
SELECT DEPTlevel + 1
, a.DEPT
, a.P_DEPT
, a.INX 
, CONVERT(VARCHAR(100), b.path_DEPT + ' / ' + CONVERT(VARCHAR(100),a.DEPT))
  FROM #tbl a
INNER JOIN ctetbl b
ON a.P_DEPT   = b.DEPT
)
SELECT INX,  DEPT, P_DEPT , path_DEPT ,PATINDEX('%'+@val1+'%',path_DEPT),PATINDEX('%'+@val2+'%',path_DEPT)
     , CASE WHEN PATINDEX('%'+@val2+'%',path_DEPT) > 0 THEN 300
       ELSE 
          CASE WHEN PATINDEX('%'+@val1+'%',path_DEPT) > 0 THEN 200 ELSE 0 END  
       END 
  FROM ctetbl 
 ORDER BY INX
GO
 
건우아빠님이 2020-08-23 13:45에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
7227여러 레코드들을 하나의 컬럼으로 합치고 싶어요 [2]
바보온달
2020-11-26
725
7226row count 조회시 실제 count와 결과값이 다릅니다. [2]
레인버그
2020-09-29
887
7225alwayson구성시 계정 관리
초보
2020-07-27
958
7224계층 구조에서 설정 적용하기 [1]
GOOD:)LUCK
2020-07-10
1142
7223MSSQL 대용량 처리 가능한가요? [1]
옛개발자
2020-07-02
1300
7222mssql trigger에 관해서
이게뭐지
2020-06-24
1203
7221대용량 데이터 삭제 관련입니다. [1]
인보
2020-06-20
1278
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2021 DSN, All rights reserved.
작업시간: 0.011초, 이곳 서비스는
	PostgreSQL v13.3으로 자료를 관리합니다