Início > SQL Server > CTE´s – Querys Recursivas

CTE´s – Querys Recursivas

— CTEs – Common Table Expressions
(Disponivel no SQLServer 2005 e 2008)

— Criar a tabela para os teste:
Create Table #tbValoresPagos (id int, dtPagamento DateTime,tpPagamento VarChar(1), vlPagamento Decimal(10,2))

— Inserir alguns valores de exemplos:
insert into #tbValoresPagos values(1, ‘2010-01-10 1:00’, ‘A’,125.30)
insert into #tbValoresPagos values(2, ‘2010-01-21 1:00’, ‘B’, 15.00)
insert into #tbValoresPagos values(3, ‘2010-01-22 1:00’, ‘B’,1964.10)
insert into #tbValoresPagos values(4, ‘2010-03-20 2:00’, ‘C’,213.47)
insert into #tbValoresPagos values(5, ‘2010-03-20 2:30’, ‘A’, 46.63)
insert into #tbValoresPagos values(6, ‘2010-04-01 3:00’, ‘B’,4899.21)
insert into #tbValoresPagos values(7, ‘2010-04-10 3:30’, ‘C’,3876.22)
insert into #tbValoresPagos values(8, ‘2010-05-01 3:40’, ‘C’, 25.11)
insert into #tbValoresPagos values(9, ‘2010-05-05 3:40’, ‘B’,647.14)
insert into #tbValoresPagos values(10,’2010-05-05 4:40′, ‘B’,659.33)
insert into #tbValoresPagos values(12,’2010-05-12 5:40′, ‘C’, 12.11)
insert into #tbValoresPagos values(13,’2010-05-20 5:42′, ‘A’, 50.00)
insert into #tbValoresPagos values(14,’2010-06-20 5:45′, ‘A’, 60.00)

— Vendo os valores inseridos
Select * from #TbValoresPagos

–Exemplo de como somar o valor de uma coluna do registro atual com o registro anterior, como um subtotal.
;WITH cte_ok AS
(     Select      row_number() over (order bydtPagamento) as idRowNumber
,           dtPagamento
,           tpPagamento
,           vlPagamento
From  #tbValoresPagos)

,           cte_Recursivo AS
(     Select      idRowNumber
,           dtPagamento
,           tpPagamento
,           vlPagamento
,           vlPagamento as vlSoma
From  cte_ok
Where idRowNumber = 1

Union All

Select      A.idRowNumber
,           A.dtPagamento
,           A.tpPagamento
,           A.vlPagamento
,           Convert(Decimal(10,2), A.vlPagamento +B.vlSoma)
From  cte_ok A
Inner Join cte_Recursivo B On A.idRowNumber =B.idRowNumber + 1)

Select * From cte_Recursivo

Fonte: http://dba-sqlserver.blogspot.com/2010/01/somar-o-valor-de-uma-coluna-com-o.html

Books OnLine: http://msdn.microsoft.com/pt-br/library/ms186243.aspx

Categorias:SQL Server
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: