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 7313 게시물 읽기
No. 7313
BOM 추가질문드립니다. 정렬문제 해결요청 드립니다.
작성자
박인규(bejjang19)
작성일
2024-08-14 09:31
조회수
426

안녕하세요.


아래처럼 bom테이블을 만들었습니다.

bom정전개 쿼리를 작성중인데 bom리스트를 정렬순서대로 표현하고 싶은데


아래처럼하면 표현은 되는데 정렬순서를 표시된 정렬순서로는 잘 안되서요. ㅎ

 


확인한번 부탁드립니다.


감사합니다.


WITH RECURSIVEBOM AS(

    SELECT 1 AS LVL

          ,A.품번

          ,A.품명

          ,A.정렬

          ,CAST(A.품번 AS VARCHAR(MAX)) AS DIR

     FROM BOM테이블 A

    WHERE A.품번 = '65503-59000' AND A.상위품번 = 'P'

    UNION ALL

    SELECT

        R.LVL + 1 AS LVL

        ,B.품번

        ,B.품명

        ,B.정렬

        ,CAST(R.DIR + '>' + B.품번 AS VARCHAR(MAX)) AS DIR

     FROM BOM테이블 B

     INNER JOIN RECURSIVEBOM R ON B.상위품번 = R.품번

)

SELECT LVL

    ,품번

    ,품명

    ,정렬

    ,dir

FROM RECURSIVEBOM

ORDER BY  LVL ASC 


 

BOM테이블     P:최상위품번     BOM정전개          
구분 품번 품명 상위품번 정렬   레벨 레벨 구분 품번 품명 정렬
제품 A 완성제품1 P 0   1 1 제품 A 완성제품1 0
반제품 B-1 반제품 B-1 A 1   ----2 2 반제품 B-1 반제품 B-1 1
반제품 B-2 반제품 B-2 A 2   ------3 3 부자재 Z-4 부자재 Z-4 1
부자재 Z-1 부자재 Z-1 A 3   ------3 3 부자재 Z-5 부자재 Z-5 2
부자재 Z-2 부자재 Z-2 A 4   ----2 2 반제품 B-2 반제품 B-2 2
부자재 Z-3 부자재 Z-3 A 5   ------3 3 반제품 B-3 반제품 B-3 1
            --------4 4 부자재 Z-8 부자재 Z-8 1
반제품 B-1 반제품 B-1 P 0   --------4 4 부자재 Z-9 부자재 Z-9 2
부자재 Z-4 부자재 Z-4 B-1 1   ------3 3 부자재 Z-7 부자재 Z-7 2
부자재 Z-5 부자재 Z-5 B-1 2   ----2 2 부자재 Z-1 부자재 Z-1 3
            ----2 2 부자재 Z-2 부자재 Z-2 4
반제품 B-2 반제품 B-2 P 0   ----2 2 부자재 Z-3 부자재 Z-3 5
반제품 B-3 반제품 B-3 B-2 1              
부자재 Z-7 부자재 Z-7 B-2 2              
                       
                       
반제품 B-3 반제품 B-3 P 0              
부자재 Z-8 부자재 Z-8 B-3 1              
부자재 Z-9 부자재 Z-9 B-3 2              

이 글에 대한 댓글이 총 2건 있습니다.
WITH bom테이블 AS
(
SELECT '제품' 구분, 'A' 품번, '완성제품1' 품명, 'P' 상위품번, 0 정렬
UNION ALL SELECT '반제품', 'B-1', '반제품 B-1', 'A'  , 1
UNION ALL SELECT '반제품', 'B-2', '반제품 B-2', 'A'  , 2
UNION ALL SELECT '부자재', 'Z-1', '부자재 Z-1', 'A'  , 3
UNION ALL SELECT '부자재', 'Z-2', '부자재 Z-2', 'A'  , 4
UNION ALL SELECT '부자재', 'Z-3', '부자재 Z-3', 'A'  , 5
UNION ALL SELECT '반제품', 'B-1', '반제품 B-1', 'P'  , 0
UNION ALL SELECT '부자재', 'Z-4', '부자재 Z-4', 'B-1', 1
UNION ALL SELECT '부자재', 'Z-5', '부자재 Z-5', 'B-1', 2
UNION ALL SELECT '반제품', 'B-2', '반제품 B-2', 'P'  , 0
UNION ALL SELECT '반제품', 'B-3', '반제품 B-3', 'B-2', 1
UNION ALL SELECT '부자재', 'Z-7', '부자재 Z-7', 'B-2', 2
UNION ALL SELECT '반제품', 'B-3', '반제품 B-3', 'P'  , 0
UNION ALL SELECT '부자재', 'Z-8', '부자재 Z-8', 'B-3', 1
UNION ALL SELECT '부자재', 'Z-9', '부자재 Z-9', 'B-3', 2
)
, recursivebom AS
(
SELECT 1 lvl
     , 품번
     , 품명
     , 정렬
     , CAST(품번 AS VARCHAR(MAX)) dir
     , CAST(CONCAT('', 10 + 정렬) AS VARCHAR(MAX)) ord
  FROM BOM테이블
 WHERE 품번 = 'A'
   AND 상위품번 = 'P'
 UNION ALL
SELECT r.lvl + 1 lvl
     , b.품번
     , b.품명
     , b.정렬
     , CAST(r.dir + '>' + b.품번 AS VARCHAR(MAX)) dir
     , CAST(CONCAT(r.ord, 10 + b.정렬) AS VARCHAR(MAX)) ord
  FROM bom테이블 b
 INNER JOIN recursivebom r
    ON b.상위품번 = r.품번
)
SELECT *
  FROM recursivebom
 ORDER BY ord
;
마농(manon94)님이 2024-08-14 14:21에 작성한 댓글입니다.
이 댓글은 2024-08-14 14:21에 마지막으로 수정되었습니다.

감사합니다. 

많은 도움되었습니다.

박인규님이 2024-08-22 15:35에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
7314sp_send_dbmail 로 메일보내기 구현 도움 요청입니다.
정길환
2024-12-20
79
7313BOM 추가질문드립니다. 정렬문제 해결요청 드립니다. [2]
박인규
2024-08-14
426
7312MSSQL 배열질문
장원영
2024-07-22
364
7311근무조별 시간에 따른 실적 집계 쿼리
쿼리바보
2024-07-22
423
7310select CHARINDEX(N'亠' , N'수질') 의 결과값이 2가 나오는 이유가 뭘까요?
황수한
2024-07-06
405
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2025 DSN, All rights reserved.
작업시간: 0.011초, 이곳 서비스는
	PostgreSQL v17.2로 자료를 관리합니다