Sql na horizontal

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 | …

Está fazendo isso no console? Creio que não seja possível.

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.

Eu desconheço modo de fazer isso e acredito que seja mais simples formatar a saída dos dados do que fazer via SQL

Salve…

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.

Estou utilizando o SQL Server 2008,

Utilizo a ferramenta do primefaces para formatar, mas não dá certo =/

[quote=tsc20]Estou utilizando o SQL Server 2008,

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.