Ir para conteúdo

Arquivado

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

Tisito

[Resolvido] Contar linhas e quebra de linha

Recommended Posts

Mais uma vez recorro a vcs.

 

Em outro tópico pedi ajuda para fazer uma consulta gerando um resultado sem colunas, somente texto separado por espaços pré-definidos, consegui realizar a consultaa através de CAST.

 

Agora pintou mais 2 dúvidas com relação a consulta.

 

1º Preciso que a consulta gere 1 contador de linhas. Por exemplo:

1 Fulano rua bla bla

2 Ciclano rua bla bla

 

Detalhe: Estou usando SQL server 2000.

 

2º Preciso que abaixo da linha acima descrita, apareçam outros campos da consulta. Por exemplo:

1 Fulano rua bla bla

1 nomepaifulano bla bla

2 ciclano rua bla bla

2 nomepaiciclano bla bla.

 

Acredito que seria tipo uma quebra de linha. Tentei usar Char(13) e não funcionou.

 

Mais uma vez agradeço pela atenção.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, o contador você terá que fazer com ROW_NUMBER(). Não testei a query abaixo, mas é algo similar a isso:

 

WITH consulta AS (
SELECT CAST(ROW_NUMBER() OVER (ORDER BY algum_campo) AS CHAR(5))+CAST(campo as CHAR(3))+CHAR(13)+CHAR(10)+CAST(outro_campo as CHAR(12)) 
) SELECT * FROM consulta

http://msdn.microsoft.com/pt-br/library/ms186734.aspx

 

A quebra de linha é CHAR(13)+CHAR(10)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, o contador você terá que fazer com ROW_NUMBER(). Não testei a query abaixo, mas é algo similar a isso:

 

WITH consulta AS (
SELECT CAST(ROW_NUMBER() OVER (ORDER BY algum_campo) AS CHAR(5))+CAST(campo as CHAR(3))+CHAR(13)+CHAR(10)+CAST(outro_campo as CHAR(12)) 
) SELECT * FROM consulta

http://msdn.microsoft.com/pt-br/library/ms186734.aspx

 

A quebra de linha é CHAR(13)+CHAR(10)

 

Cara o Row_number deu como função invalida, estou usando o SQLSERVER 2000 nas consultas.

 

Quanto a quebra de linha, deixei assim o codigo:

CAST(ISNULL(cad.email,' ') AS CHAR(100))+CAST('' AS CHAR(250))+CHAR(13)+CHAR(10) 
+CAST('002' AS CHAR(3))
e mesmo assim não quebrou a linha, parece que só deu espaço ao invés de quebrar a linha.

 

Obrigado pela respostas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ops, CTEs e ROW_NUMBER() é só a partir do 2005 mesmo =) Pro 2000 eu nunca trabalhei com contador de linhas, provavelmente você terá que criar uma tabela temporária com identity.

 

Me responde uma coisa, com CHAR(13)+CHAR(10) aparece o espaço, mas o que acontece se você copiar umas três linhas e colar no bloco de notas? Digo isso porque no Query Analyzer / Enterprise Manager, quebras de linha são exibidas como espaço mesmo, mas o caractere da quebra está lá ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ops, CTEs e ROW_NUMBER() é só a partir do 2005 mesmo =) Pro 2000 eu nunca trabalhei com contador de linhas, provavelmente você terá que criar uma tabela temporária com identity.

 

Me responde uma coisa, com CHAR(13)+CHAR(10) aparece o espaço, mas o que acontece se você copiar umas três linhas e colar no bloco de notas? Digo isso porque no Query Analyzer / Enterprise Manager, quebras de linha são exibidas como espaço mesmo, mas o caractere da quebra está lá ;)

 

No bloco de notas quebrou a linha, eu estava visualizando pelo editpad lite.

Mas houve uma quebra de linnha anterior a essa que eu coloquei, por acaso o limite de caracteres no bloco de notas é 1024 por linha? Acredito que é por isso que quebrou a linha anteriormente.

 

Como funciona essa tabela temporária com identity??

 

Muito obrigado mesmo cara pelo apoio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No menu "exibir" do bloco de notas dá pra configurar a quebra de linha, se estiver desabilitada ela é ilimitada.

 

A tabela temporária funciona como uma tabela normal, mas você prefixa ela com uma cerquilha #.

 

SELECT IDENTITY(INT,1,1) AS contador,
seu_campo
INTO #temporaria
FROM sua_tabela;
SELECT * from #temporaria;
DROP TABLE #temporaria;

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.