Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

joaofla123

[Resolvido] Consulta na vertical, tem como fazer?

Recommended Posts

Eu desejo fazer uma consulta bem simples aparecer na vertical. Não estou buscando em nenhuma tabela, apenas digito os valores direto.

 

Select 'linha1', 'linha2', 'linha3';

 

So que isso resulta em:

 

linha1 linha2 linha3

 

 

Existe uma maneira de fazer o resultado sair assim: ???

 

linha1

linha2

linha3

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se os tipos forem iguais ...

 

Select 'linha1'
UNION
Select 'linha2'
UNION
Select 'linha3'

 

Pq precisa disto ?!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu desejo fazer uma consulta bem simples aparecer na vertical. Não estou buscando em nenhuma tabela, apenas digito os valores direto.

 

Select 'linha1', 'linha2', 'linha3';

 

So que isso resulta em:

 

linha1 linha2 linha3

 

 

Existe uma maneira de fazer o resultado sair assim: ???

 

linha1

linha2

linha3

 

No seu contexto de exemplo não tem como, pois você não tem "colunas", somente valores e valores deste modo não é possível utilizar para conversão.

Você mencionou "um select simples", mas este select tem colunas em seu resultado (nome de colunas).

De uma olhada tão famoso PIVOT TABLE que é utilizado para converter linhas em colunas a partir do SQL 2005

 


declare @venda table (ano int, mes int, valor numeric(9,2))



insert @venda values (2003, 2, 10)
insert @venda values (2003, 2, 1)   
insert @venda values (2003, 3, 20)
insert @venda values (2003, 4, 30)
insert @venda values (2004, 1, 40)
insert @venda values (2004, 2, 50)
insert @venda values (2004, 3, 60)
insert @venda values (2004, 4, 70)
insert @venda values (2005, 1, 80)


/*****************
 SQL 2000
*****************/
select  ano
        , mes_1 = sum(case when mes=1 then valor end)
        , mes_2 = sum(case when mes=2 then valor end)
        , mes_3 = sum(case when mes=3 then valor end)
        , mes_4 = sum(case when mes=4 then valor end)
from @venda
group by ano
order by ano;


/*************************
SQL 2005 // SQL 2008
*************************/

Select ano
        , [1] as Jan
        , [2] as Fev
        , [3] as Mar
        , [4] as Abr
from @venda pivot (sum(valor) for mes in ([1],[2],[3],[4])) p
order by 1;

 

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeu motta, era exatamente o q eu precisava. estou trabalhando com o xtrareports e como nao o conheco mt bem passando por dificuldades com preenchimento das tabelas.

 

eu tenho uma procedure que preenche tres linhas. mas a descricao lateral dessas linhas eu nao tinha como colocar por fora. dessa forma ai eu consigo. pelo menos foi a unica maneira q consegui fazer

 

sou outra coisa motta, tem como dar um nome a essa coluna comm os resultados?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.