1
SQL Server에서 CTE를 사용하여 재귀 쿼리를 작성하는 데 도움이 필요합니다.상위 부모를 얻는 SQL Server 재귀 쿼리
나는 입력 매개 변수로 주문 번호가 있습니다. 그 상위 부모 발송 세부 정보를 표시해야합니다. 아이를 찾더라도 .. 즉 3 번 주문을 검색하면 최상위 부모 주문을 받아야합니다. 즉
CREATE TABLE #TblSerialNo
(
[SRno] [char](20) NOT NULL ,
[CustSrNo] [varchar](75) NULL
)
CREATE TABLE #TblSerialReleation
(
[SRno] [char](20) NOT NULL ,
[ChildSRno] [char](20) NOT NULL
)
CREATE TABLE #TblDespatch
(
[SRno] [char](20) NOT NULL ,
OrderNo INT NOT NULL
)
INSERT INTO #TblSerialNo VALUES ('TS1', 'DD123CV1')
INSERT INTO #TblSerialNo VALUES ('TS2', 'DD123CV2')
INSERT INTO #TblSerialNo VALUES ('TS3', 'DD123CV3')
INSERT INTO #TblSerialNo VALUES ('BS1', 'DD12sfs3CV1')
INSERT INTO #TblSerialNo VALUES ('BS2', 'DD1et23CV2')
INSERT INTO #TblSerialNo VALUES ('CS1', 'DD12e3CV1')
INSERT INTO #TblSerialNo VALUES ('CS2', 'DD12fe3CV2')
INSERT INTO #TblSerialNo VALUES ('BS1aa', 'DD12d3CV1')
INSERT INTO #TblSerialNo VALUES ('BS1ab', 'DDd123CV2')
INSERT INTO #TblSerialNo VALUES ('BS1ac', 'DD1r23CV3')
INSERT INTO #TblSerialNo VALUES ('BS2aa', 'DDs123CV4')
INSERT INTO #TblSerialNo VALUES ('BS2ab', 'DD12d3CV1')
INSERT INTO #TblSerialNo VALUES ('BS2ac', 'DD1s23CV2')
INSERT INTO #TblSerialNo VALUES ('CS1aa', 'DD1s23CV3')
INSERT INTO #TblSerialNo VALUES ('CS1ab', 'DD12s3CV4')
INSERT INTO #TblSerialNo VALUES ('CS1ac', 'DD123dCV1')
INSERT INTO #TblSerialNo VALUES ('CS2aa', 'DDa123CV2')
INSERT INTO #TblSerialNo VALUES ('CS2ab', 'DDa123CV3')
INSERT INTO #TblSerialNo VALUES ('CS2ac', 'DDa123CV4')
--================ Relation table ==============
INSERT INTO #TblSerialReleation VALUES ('TS1', 'BS1')
INSERT INTO #TblSerialReleation VALUES ('TS1', 'BS2')
INSERT INTO #TblSerialReleation VALUES ('TS2', 'CS1')
INSERT INTO #TblSerialReleation VALUES ('TS2', 'CS2')
INSERT INTO #TblSerialReleation VALUES ('BS1', 'BS1aa')
INSERT INTO #TblSerialReleation VALUES ('BS1', 'BS1ab')
INSERT INTO #TblSerialReleation VALUES ('BS1', 'BS1ac')
INSERT INTO #TblSerialReleation VALUES ('BS2', 'BS2aa')
INSERT INTO #TblSerialReleation VALUES ('BS2', 'BS2ab')
INSERT INTO #TblSerialReleation VALUES ('BS2', 'BS2ac')
INSERT INTO #TblSerialReleation VALUES ('CS1', 'CS1aa')
INSERT INTO #TblSerialReleation VALUES ('CS1', 'CS1ab')
INSERT INTO #TblSerialReleation VALUES ('CS1', 'CS1ac')
INSERT INTO #TblSerialReleation VALUES ('CS2', 'CS2aa')
INSERT INTO #TblSerialReleation VALUES ('CS2', 'CS2ab')
INSERT INTO #TblSerialReleation VALUES ('CS2', 'CS2ac')
--=========== Despatch
INSERT INTO #TblDespatch VALUES ('CS2ac', 1)
INSERT INTO #TblDespatch VALUES ('CS2ab', 1)
INSERT INTO #TblDespatch VALUES ('CS2ac', 1)
INSERT INTO #TblDespatch VALUES ('CS1aa', 1)
INSERT INTO #TblDespatch VALUES ('CS1ac', 1)
INSERT INTO #TblDespatch VALUES ('CS2ac', 1)
INSERT INTO #TblDespatch VALUES ('CS2ac', 1)
INSERT INTO #TblDespatch VALUES ('TS1', 1)
INSERT INTO #TblDespatch VALUES ('TS3', 2)
INSERT INTO #TblDespatch VALUES ('TS2', 3)
INSERT INTO #TblDespatch VALUES ('BS2ab', 20)
DROP TABLE #TblDespatch
DROP TABLE #TblSerialNo
DROP TABLE #TblSerialReleation
감사 미리 .. 여기서 제
내 테이블 구조이다. 데이터에서 찾고
- 그들은 어떻게 할 링크 (만약 당신이 지금 손으로 그것을했다)? 위의 데이터에서 관계가 표시되지 않습니다. – sgeddes
@sgeddes 'TblSerialReleation' 테이블에있는 것으로 보입니다 – GolfWolf
@ w0lf - 거기에있는 것으로 보입니다. 그러나 TS2가 BS2ab (20)과 다시 일치하는 방식을 알아낼 수는 없습니다. 나는 그것을 볼 수 없다 :) – sgeddes