Pessoal
Abaixo o script que reflete no que eu queria, vou fazer alguns testes na base original pois no momento estou sem acesso a mesma mas acredito que no máximo seja necessário pequenos ajuste ai é só manipular da forma que bem entender seja em função ou tabela Z ou tabela temporario enfim.
BEGIN
-- PARAMETROS
DECLARE @CODCOLIGADA INT
DECLARE @IDMOV INT
SET @CODCOLIGADA = 1
SET @IDMOV = 305726
-- VARIAVEIS
DECLARE @CODCOLORIGEM INT
DECLARE @IDMOVORIGEM INT
DECLARE @CODCOLDESTINO INT
DECLARE @IDMOVDESTINO INT
DECLARE @TIPORELAC VARCHAR(10)
DECLARE @IDPROCESSO INT
DECLARE @CODTMV VARCHAR(07)
DECLARE @CONTROLE INT
SET @CONTROLE = 1
DECLARE @CONTADOR INT
WHILE ( @CONTROLE = 1 )
BEGIN
SET @CONTADOR = 0
DECLARE CUR CURSOR FOR
SELECT CODCOLORIGEM, IDMOVORIGEM, CODCOLDESTINO, IDMOVDESTINO, TIPORELAC, IDPROCESSO
FROM TMOVRELAC
WHERE CODCOLORIGEM = @CODCOLIGADA
AND IDMOVORIGEM = @IDMOV
OPEN CUR
FETCH NEXT FROM CUR INTO @CODCOLORIGEM, @IDMOVORIGEM, @CODCOLDESTINO, @IDMOVDESTINO, @TIPORELAC, @IDPROCESSO
WHILE(@@FETCH_STATUS = 0)
BEGIN
SET @CONTADOR = @CONTADOR + 1
SET @CODTMV = ''
SELECT @CODTMV = CODTMV
FROM TMOV WHERE CODCOLIGADA = @CODCOLDESTINO AND IDMOV = @IDMOVDESTINO
PRINT ''
-- PRINT 'CODCOLORIGEM: ' + CONVERT(VARCHAR,@CODCOLORIGEM)
-- PRINT 'IDMOVORIGEM: ' + CONVERT(VARCHAR,@IDMOVORIGEM)
PRINT 'CODCOLDESTINO: ' + CONVERT(VARCHAR,@CODCOLDESTINO)
PRINT 'IDMOVDESTINO: ' + CONVERT(VARCHAR,@IDMOVDESTINO)
PRINT 'MOVIMENTO: ' + @CODTMV
FETCH NEXT FROM CUR INTO @CODCOLORIGEM, @IDMOVORIGEM, @CODCOLDESTINO, @IDMOVDESTINO, @TIPORELAC, @IDPROCESSO
END
CLOSE CUR
DEALLOCATE CUR
IF ( @CONTADOR = 0 )
BEGIN
SET @CONTROLE = 0
END ELSE BEGIN
SET @CODCOLIGADA = @CODCOLDESTINO
SET @IDMOV = @IDMOVDESTINO
END
END
END
Créditos de FABIO DELBONI - TOTVS