Usuário com melhor resposta
Connect by no SQL Express

Pergunta
-
CREATE TABLE usu_tctrpar
(
usu_codemp SMALLINT,
usu_codfil SMALLINT,
usu_codcre VARCHAR (8),
usu_seqapt INT,
usu_codmtv VARCHAR (4),
usu_dtinpa DATETIME,
usu_hrinpa INT,
usu_dtfipa DATETIME,
usu_hrfipa INT,
usu_sitpar VARCHAR (1)
)
INSERT INTO dbo.usu_tctrpar (usu_codemp, usu_codfil, usu_codcre, usu_seqapt, usu_codmtv, usu_dtinpa, usu_hrinpa, usu_dtfipa, usu_hrfipa, usu_sitpar)
VALUES (1, 1, '902', 82, '901', '08/12/2017', 977, '11/12/2017', 501, '')
Goo resultado que traz é:
usu_dtinpa usu_dtfipa
08/12/2017 11/12/2017
mas precisava que viesse da seguinte forma
usu_dtinpa usu_dtfipa
08/12/2017 08/12/2017
09/12/2017 09/12/2017
10/12/2017 10/12/2017
11/12/2017 11/12/2017
no oracle utilizava o connect by level, no entanto estou usando sql server e não estou conseguindo encontrar uma forma para trazer em linha as quantidades de dias, pois preciso saber a quantidade de minutos por dia que teve parada de produção.
Respostas
-
Rodrigo,
Já tentou utilizar as funções Lad e Lead, veja se este exemplo pode te ajudar:
-- Declarando a variável do tipo Table -- DECLARE @Valores TABLE (Data DATE, Valor DECIMAL(4,2)) -- Inserindo valores na variável -- INSERT INTO @Valores VALUES ('2012-04-01',0.55), ('2012-05-01',4.07), ('2012-06-01',10.22), ('2012-07-01',2.59), ('2012-08-01',5.29) -- Utilizando as Windows Function Lag e Lead -- SELECT Data, Valor, LAG(Valor) OVER (ORDER BY Data) As 'Posição Inicial', LEAD(Valor) OVER (ORDER BY Data) As 'Posição Posterior', LAG(Valor,2) OVER (ORDER BY Data) As 'Posição Intermediária', LEAD(Valor,3) OVER (ORDER BY Data) As 'Posição Final' FROM @Valores
Pedro Antonio Galvao Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 18 de dezembro de 2017 13:14
Todas as Respostas
-
-
Rodrigo,
Já tentou utilizar as funções Lad e Lead, veja se este exemplo pode te ajudar:
-- Declarando a variável do tipo Table -- DECLARE @Valores TABLE (Data DATE, Valor DECIMAL(4,2)) -- Inserindo valores na variável -- INSERT INTO @Valores VALUES ('2012-04-01',0.55), ('2012-05-01',4.07), ('2012-06-01',10.22), ('2012-07-01',2.59), ('2012-08-01',5.29) -- Utilizando as Windows Function Lag e Lead -- SELECT Data, Valor, LAG(Valor) OVER (ORDER BY Data) As 'Posição Inicial', LEAD(Valor) OVER (ORDER BY Data) As 'Posição Posterior', LAG(Valor,2) OVER (ORDER BY Data) As 'Posição Intermediária', LEAD(Valor,3) OVER (ORDER BY Data) As 'Posição Final' FROM @Valores
Pedro Antonio Galvao Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 18 de dezembro de 2017 13:14
-
Bom dia,
Por falta de retorno essa thread está encerrada.
Se necessário, favor abrir uma nova thread.
Atenciosamente,Filipe B de Castro
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.