Consultas de linhas ímpares SQL SERVER

23/11/2017

0

Olá, Possuo a seguinte dúvida a ser respondida.

Preciso criar script de consulta que retorne da tabela abaixo somente as suas linhas ímpares, ordenadas de forma ascendente:

declare @table table (coluna1 varchar(50)) insert into @table values ('Anthony'),('Miguel'),('Benjamin'),('Lucca'),('Enzo'),('Martim'), ('Noah'),('Gael'),('Henrique'),('Heitor'),('Nícolas'),('Bernardo'), ('Filipe'),('Arthur'),('Apolo'),('José'),('João'),('Antônio'), ('Vicente'),('Alice'),('Luna'),('Valentina'),('Isabela'),('Larissa' ), ('Laura'),('Antonella'),('Victoria'),('Julia'),('Manuela'),('Ana'), ('Camila'),('Beatriz'),('Elisa'),('Sophia'),('Mayara'),('Maria')
Observação: Não posso alterar o script acima criando outro campo como id.
Aureo Neto

Aureo Neto

Responder

Posts

29/11/2017

Cleyton Alberti

Tenta assim:
SELECT coluna1 FROM table t1
WHERE t1.coluna1 IN
(
SELECT
CASE WHEN ROW_NUMBER() OVER(ORDER BY t2.coluna1) % 2 = 0
THEN t2.coluna1
ELSE ''
END
FROM table t2
)
Responder

29/11/2017

Cleyton Alberti

Ressalta-se que para uma tabela que tenha muitos dados isso não seria aconselhável.
Dai o correto seria criar uma nova coluna.
Responder

10/01/2018

Emerson Nascimento

eu faria um pouco diferente:

SELECT * FROM (
SELECT ROW_NUMBER() OVER(ORDER BY coluna1) linha, coluna1 FROM table
) TAB WHERE linha % 2 > 0
ORDER BY linha
Responder

14/01/2018

Vinicius Diniz

select *
from @table
where mod(ROW_NUMBER(),2) <> 0
order by 1


Então a ideia é dividir o id da lina por 2 se der resto na divisão é impar, depois é só ordenar. Cara eu não tenho sql server instalado aqui por isso não sei se vai dar erro na sintaxe. Eu fiz isso baseado mais no oracle mas acredito que a sintaxe deve estar certa
Espero ter ajudado.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar