В моей таблице 3 столбца: OriginalDoc, ChildDoc и Fee. За каждого родителя в зависимости от количества детей или внуков взимается плата.
Стоимость каждого детского документа составляет 0,40 доллара США.
Из приведенного ниже примера
DocId : AB12456 has one Child Doc and so Fee is $0.40
Doc Id : CY12345 has 7 Children/GrandChildren Doc and so Fee is $2.80
Плата за такие документы, как NX23410 и NY23422, не взимается. Потому что их Родительский документ № CY12345 взимается за всех детей/внуков.
DECLARE @Sample TABLE ( OriginalDoc VARCHAR(255), ChildDoc VARCHAR(255), Fee MONEY );
INSERT INTO @Sample
VALUES ( 'AB12456', 'NX12450', NULL ),
( 'CY12345', 'NX23410', NULL ),
( 'CY12345', 'NX23421', NULL ),
( 'CY12345', 'NX23432', NULL ),
( 'NX23410', 'NY23411', NULL ),
( 'NX23410', 'NY23422', NULL ),
( 'NY23422', 'NZ23411', NULL ),
( 'NY23422', 'NZ23422',NULL);
Как написать иерархический SQL-запрос без жесткого кодирования идентификаторов документов? Мы будем передавать входной параметр как DocId.