Transformar Linhas em Colunas no Firebird
20/09/2013
0
Vou aplicar em cima deste script:
Select extract(YEAR from despesas.datavencimento) || '/' || LPAD(extract(MONTH from despesas.datavencimento), 2,'0') as DATA, classecontabil.classecontabil, SUM(despesas.valorliquido) AS TOTAL from despesas inner join classecontabil on despesas.idclassecontabil = classecontabil.idclassecontabil where classecontabil.custofixoouvariavel = 'FIXO' and despesas.datavencimento >= :datainicial and despesas.datavencimento <= :datafinal GROUP BY DATA, classecontabil.classecontabil
Obrigado
Claudio Junior
Posts
20/09/2013
Claudio Junior
Select classecontabil.classecontabil, SUM(IiF(extract(YEAR from despesas.datavencimento) || '/' || LPAD(extract(MONTH from despesas.datavencimento), 2,'0') = '2013/01',despesas.valorliquido, 0)) as "2013/01", SUM(IiF(extract(YEAR from despesas.datavencimento) || '/' || LPAD(extract(MONTH from despesas.datavencimento), 2,'0') = '2013/02',despesas.valorliquido, 0)) as "2013/02", SUM(IiF(extract(YEAR from despesas.datavencimento) || '/' || LPAD(extract(MONTH from despesas.datavencimento), 2,'0') = '2013/03',despesas.valorliquido, 0)) as "2013/03", SUM(IiF(extract(YEAR from despesas.datavencimento) || '/' || LPAD(extract(MONTH from despesas.datavencimento), 2,'0') = '2013/04',despesas.valorliquido, 0)) as "2013/04" from despesas inner join classecontabil on despesas.idclassecontabil = classecontabil.idclassecontabil where classecontabil.custofixoouvariavel = 'FIXO' and despesas.datavencimento >= :datainicial and despesas.datavencimento <= :datafinal GROUP BY DATA, classecontabil.classecontabil
20/09/2013
Claudio Junior
Select classecontabil.classecontabil, SUM(IiF(extract(YEAR from despesas.datavencimento) || '/' || LPAD(extract(MONTH from despesas.datavencimento), 2,'0') = '2013/01',despesas.valorliquido, 0)) as "2013/01", SUM(IiF(extract(YEAR from despesas.datavencimento) || '/' || LPAD(extract(MONTH from despesas.datavencimento), 2,'0') = '2013/02',despesas.valorliquido, 0)) as "2013/02", SUM(IiF(extract(YEAR from despesas.datavencimento) || '/' || LPAD(extract(MONTH from despesas.datavencimento), 2,'0') = '2013/03',despesas.valorliquido, 0)) as "2013/03", SUM(IiF(extract(YEAR from despesas.datavencimento) || '/' || LPAD(extract(MONTH from despesas.datavencimento), 2,'0') = '2013/04',despesas.valorliquido, 0)) as "2013/04" from despesas inner join classecontabil on despesas.idclassecontabil = classecontabil.idclassecontabil where classecontabil.custofixoouvariavel = 'FIXO' and despesas.datavencimento >= :datainicial and despesas.datavencimento <= :datafinal GROUP BY DATA, classecontabil.classecontabil
20/09/2013
Alex Lekao
Eu sei que no SQL Server tem isso mais pratico, eh o PIVOT ele ja traz todo o trampo pra vc.
No Caso do Firebird, dei uma boa pesquisando e apenas usando subselects e os dados acabam ficando fixos, por exemplo todos os meses, e os sem valores aparecerao vazios, todos os dias, todos os dias da semana.
Nao achei nada que fosse dinamico nao.
Acredito que possa nao ser possivel no Firebird ter isso mais dinamicamente ou de maneira mais pratica.
Provavelmente vc tera que montar uma SP para fazer a coleta dos dados e armazena como uma nota tabela temporaria na estrutura que vc quer.
Infelizmente nao poderei te ajudar nessa.
Boa Sorte.
Abraco.
Alex - Lekao
20/09/2013
Claudio Junior
Abraços
Eu sei que no SQL Server tem isso mais pratico, eh o PIVOT ele ja traz todo o trampo pra vc.
No Caso do Firebird, dei uma boa pesquisando e apenas usando subselects e os dados acabam ficando fixos, por exemplo todos os meses, e os sem valores aparecerao vazios, todos os dias, todos os dias da semana.
Nao achei nada que fosse dinamico nao.
Acredito que possa nao ser possivel no Firebird ter isso mais dinamicamente ou de maneira mais pratica.
Provavelmente vc tera que montar uma SP para fazer a coleta dos dados e armazena como uma nota tabela temporaria na estrutura que vc quer.
Infelizmente nao poderei te ajudar nessa.
Boa Sorte.
Abraco.
Alex - Lekao
20/09/2013
Alex Lekao
Boa Sorte.
Abraco.
Alex - Lekao
20/09/2013
Claudio Junior
23/09/2013
Alex Lekao
Me interessei no assunto.
Ate falei com uns amigos que ja mexeram ou mexem como firebird e nao me disseram se seria possivel, alguns disseram que so com procedures e tal, mas nada conclusivo.
Acompanhando o post.
23/09/2013
Claudio Junior
23/09/2013
Claudio Junior
25/09/2013
Layla Pontes
25/09/2013
Claudio Junior
12/11/2013
Alex Lekao
o ideal eh usar o PIVOT, esse eu sei que tem no SQL Server, e faz exatamente isso, de transformar as linhas em colunas.
se nao me engano existe alguma coisa que da para fazer que deixa as colunas dinamicas, nao lembro exatamente se eh com funcao ou com procedure, ja vi muito issos na internet ajudando a fazer, mas era em SQL Server.
Abraco.
12/11/2013
Claudio Junior
12/11/2013
Claudio Junior
Clique aqui para fazer login e interagir na Comunidade :)