Usuário com melhor resposta
Valor da coluna anterior

Pergunta
-
Estou tentando criar um relatório que mostre o total das venda em cada mês e o crescimento em relação ao mês anterior.
O relatório é uma matrix, a coluna é agrupada por data.
Relatório
Tentei usar o previous ((Fields!SaldoValor.Value)/Previous(Fields!SaldoValor.Value)), porém, só funciona para linha.
desenho do relatorio
Alguém sabe como eu como eu pego o valor da coluna anterior?
Daniel Viana
Respostas
-
Creio que solucionará o meu caso. Obrigado.
Daniel Viana
- Marcado como Resposta Daniel Viana quarta-feira, 13 de maio de 2015 19:01
Todas as Respostas
-
Olá Daniel Viana,
Você pode trabalhar o resultado desejado através do T-SQL levando para o DataSet do Reporting Services os dados já preparados para exibir no relatório.
Fiz um exemplo que retrata exatamento o que você está tentando fazer no reporting services através do comando LAG (Transact-SQL)
Declare @table table (Product varchar(255),[Date] date,Quantity decimal(18,3),Value decimal(18,3)) insert into @table (Product,[Date],Quantity,Value) values ('BOBINAS','2015-02-01',1648,5399.38) insert into @table (Product,[Date],Quantity,Value) values ('BOBINAS','2015-03-01',1997.3,6479.256) Select Product, [Date], Quantity, Value, (LAG(Value,1,0) Over (order by [Date])) as PreviousValue, case when (LAG(Value,1,0) Over (order by [Date]))=0 then 0 else (Value/(LAG(Value,1,0) Over (order by [Date]))-1)*100 end as growth from @table
Fonte: https://msdn.microsoft.com/en-us/library/hh231256.aspx
O recurso LAG Transact-SQL acessa os dados de uma linha anterior no mesmo conjunto de dados sem precisar de fazer Join entre tabelas.
O recurso LEAD Transact-SQL é o contrário do recurso LAG Transaction-SQL. Ele acessa os dados de uma linha posterior no mesmo conjunto de dados.
Fonte: https://msdn.microsoft.com/en-us/library/hh213125.aspx
Abraços
Ricardo Lacerda
- Editado Ricardo Lacerda segunda-feira, 11 de maio de 2015 18:14
- Sugerido como Resposta Ricardo Lacerda terça-feira, 12 de maio de 2015 19:51
-
-
-
-
Ok Daniel Viana,
Você pode trabalhar o resultado desejado através do T-SQL levando para o DataSet do Reporting Services os dados já preparados para exibir no relatório.
Segue um outro exemplo utilizando o Recurso PIVOT (T-SQL) como solução da sua questão. Este commando transforma linhas em colunas.
Declare @table table (Product varchar(255),[Date] date,Quantity decimal(18,3),Value decimal(18,3)); insert into @table (Product,[Date],Quantity,Value) values ('BOBINAS','2015-02-01',1648,5399.38); insert into @table (Product,[Date],Quantity,Value) values ('BOBINAS','2015-03-01',1997.3,6479.256); Select Product, Quantity, Value as Valor, PreviousValue,[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12] from ( Select Product, [Date], Quantity, Value, month([Date]) as Mes, (LAG(Value,1,0) Over (order by [Date])) as PreviousValue, case when (LAG(Value,1,0) Over (order by [Date]))=0 then 0 else (Value/(LAG(Value,1,0) Over (order by [Date]))-1)*100 end as growth from @table where year([Date])=2015 ) as q1 Pivot ( avg(growth) for Mes in ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12]) ) as PivotValue
Fonte: https://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx
Atenciosamente
Ricardo Lacerda
- Editado Ricardo Lacerda quarta-feira, 13 de maio de 2015 13:41
-
Daniel Viana,
Com a primeira query você terá o mesmo resultado do recurso PIVOT (T-SQL).
1) Como teste eu criei um dataset no Reporting Services com a seguinte consulta.
Declare @table table (Product varchar(255),[Date] date,Quantity decimal(18,3),Value decimal(18,3)) insert into @table (Product,[Date],Quantity,Value) values ('BOBINAS','2015-02-01',1648,5399.38) insert into @table (Product,[Date],Quantity,Value) values ('BOBINAS','2015-03-01',1997.3,6479.256) Select Product, [Date], Quantity, Value, month([Date]) as mes, (LAG(Value,1,0) Over (order by [Date])) as PreviousValue, case when (LAG(Value,1,0) Over (order by [Date]))=0 then 0 else (Value/(LAG(Value,1,0) Over (order by [Date]))-1)*100 end as growth from @table
where
year([Date]) =2015
2) Arraste a Matriz com a seguinte configuração:
3) Resultado
Ricardo Lacerda
- Editado Ricardo Lacerda quarta-feira, 13 de maio de 2015 14:05
- Sugerido como Resposta Ricardo Lacerda quinta-feira, 14 de maio de 2015 03:05
-
Creio que solucionará o meu caso. Obrigado.
Daniel Viana
- Marcado como Resposta Daniel Viana quarta-feira, 13 de maio de 2015 19:01
-