Bom dia pessoal, alguem sabe explicar como que faz o resultado do sql ficar na Horizontal.
Esse aqui é meu SQL
select R.nmRepres, cast(month(dtEmissao)as varchar)as mes, sum(D.vlTotal)
from DF D, Repres R
where
r.cdRepres = d.cdRepres
and cdMovCtb in ("100","37")
and numDoc is not null
and fStatus not in( "I", "C")
and dtEmissao BETWEEN "2013.01.01" AND "2014.01.01"
group by R.nmRepres,cast(month(dtEmissao)as varchar)
order by R.nmRepres, mes
Esse é a forma como retorna hoje
nmRepres|mes| vltotal
AREA 1 1 4234
AREA 1 2 34232
AREA 1 3 23442
AREA 1 4 2342
Mas preciso que retorne na Horizontal tipo assim
VEND. AREA1 | AREA 2 | …
mes 100000 | 25001125 | …
Alguns bancos (SQLServer por exemplo) suportam isso através de PIVOT TABLE. No Oracle dá pra fazer na unha usando combinação de sum e decode (isso se você tiver um range definido para a coluna nmRepres). Diz aí qual banco tá usando que acho que dá pra dar uns petelécos.
Em alguns casos pode sim ser mais simples obter o efeito na saída. Se fosse num relatório desenhado com iReports, por exemplo… tá lá o Crosstab pra isso… possível de fazer via SQL é. Se nesse caso vai ser a melhor ou mais prática solução, aí há que se ver.
Utilizo a ferramenta do primefaces para formatar, mas não dá certo =/
[/quote]
Você não vai conseguir fazer direto pelo primefaces. Você vai ter que criar uma classe que formate esses dados e disponibilize para o primefaces. Uma classe auxiliar.