Olá, tudo bem?
Segue um trecho de SQL muito interessante, que traz a estrutura de produtos, informando no final do WHERE somente o código do produto pai.
Esta query é útil para iniciar a construção de qualquer relatório que se baseie em estrutura de produtos. Aí é sua imaginação (e necessidade) que mandam.
Segue o código (Para SQL SERVER):
WITH ESTRUT( CODIGO, COD_PAI, COD_COMP, QTD, PERDA, DT_INI, DT_FIM, NIVEL ) AS
(
SELECT G1_COD PAI, G1_COD, G1_COMP, G1_QUANT, G1_PERDA, G1_INI, G1_FIM, 1 AS NIVEL
FROM SG1010 SG1 (NOLOCK)
WHERE SG1.D_E_L_E_T_ = ''
AND G1_FILIAL = '01'
UNION ALL
SELECT CODIGO, G1_COD, G1_COMP, QTD * G1_QUANT, G1_PERDA, G1_INI, G1_FIM, NIVEL + 1
FROM SG1010 SG1 (NOLOCK)
INNER JOIN ESTRUT EST
ON G1_COD = COD_COMP
WHERE SG1.D_E_L_E_T_ = ''
AND SG1.G1_FILIAL = '01'
)
SELECT *
FROM ESTRUT E1
WHERE E1.CODIGO = 'SEUCODIGO'
AND E1.DT_FIM >= '20170119'
Você pode também pegar o trecho com WITH () e transformar em uma VIEW
Dicas simples e rápida.