Ir para conteúdo

Arquivado

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

Berlan Barbalho

Problema para pular resultados de consulta

Recommended Posts

Boa tarde, estou com um problema para conseguir pular os 4 primeiros resultados dessa consulta, ja tentei usar o ROW_NUMBER() para fazer isso mais não consegui fazer funcionar, alguém poderia da uma ajuda?

 

SELECT TOP 4 GuildMember.G_Name as G_Name, SUM(Character.Resets) as TotalResets, RANK() OVER(ORDER BY SUM(Character.Resets) DESC) as Rank
FROM MuOnline.dbo.GuildMember, MuOnline.dbo.Character
WHERE GuildMember.Name = Character.Name
GROUP BY GuildMember.G_Name
HAVING SUM(Character.Resets) >= 0
ORDER BY SUM(Character.Resets) DESC

 

 

Agradeço antecipadamente!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde.

 

Veja se desta forma é o que precisa:

 

SELECT *
FROM (
SELECT GuildMember.G_Name as G_Name, SUM(Character.Resets) as TotalResets, ROW_NUMBER() OVER(ORDER BY SUM(Character.Resets) DESC) as Rank
FROM MuOnline.dbo.GuildMember, MuOnline.dbo.Character
WHERE GuildMember.Name = Character.Name
GROUP BY GuildMember.G_Name
HAVING SUM(Character.Resets) >= 0
) AS LISTA
WHERE LISTA.RANK > 4

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
22 minutos atrás, marcio.theis disse:

Boa tarde.

 

Veja se desta forma é o que precisa:

 


SELECT *
FROM (
SELECT GuildMember.G_Name as G_Name, SUM(Character.Resets) as TotalResets, ROW_NUMBER() OVER(ORDER BY SUM(Character.Resets) DESC) as Rank
FROM MuOnline.dbo.GuildMember, MuOnline.dbo.Character
WHERE GuildMember.Name = Character.Name
GROUP BY GuildMember.G_Name
HAVING SUM(Character.Resets) >= 0
) AS LISTA
WHERE LISTA.RANK > 4

 

Funcionou perfeitamente, obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por FabianoSouza
      Preciso corrigir o erro "Somente uma expressão pode ser especificada na lista de seleção quando a subconsulta não é introduzida com EXISTS." da minha consulta.
      SELECT TA.titulo AS 'Trilha' , (SELECT CAST(ROUND((Comportamental * 100.0) / (Comportamental + Técnico), 2) AS DECIMAL(5,1)) AS Comportamental ,CAST(ROUND((Técnico * 100.0) / (Comportamental + Técnico), 2) AS DECIMAL(5,1)) AS Técnico FROM ( SELECT SUM(CASE WHEN dbo.tabB.enfoque = '1' THEN 1 ELSE 0 END) AS Comportamental, SUM(CASE WHEN dbo.tabB.enfoque = '2' THEN 1 ELSE 0 END) AS Técnico, COUNT(*) AS Total FROM dbo.tabB ) tab ) FROM dbo.tabA AS TA Nessa consulta, preciso trazer o título (da tabA) e o resultado de um cálculo feito na subconsulta, nos campos Comportamental e Técnico.
    • Por JoãoNeto2
      Eu estava usando um programa em PHP que conectava e lia um banco de dados SQL Server. Do nada ele parou de funcionar apresentando a seguinte mensagem :
      O cliente não pode estabelecer conexão porque foi encontrado um erro durante os handshakes anteriores ao logon. As causas comuns incluem a tentativa do cliente de conectar-se a uma versão sem suporte do SQL Server, o servidor muito ocupado para aceitar novas conexões ou uma limitação de recursos (memória ou máximo de conexões permitidas) no servidor.
      Algumas informações para esclarecer :
      1-Consigo conectar o banco via Dbeaver da própria máquina que o programa PHP deixou de funcionar
      2-De outra máquina consigo conectar esse mesmo banco com o mesmo programa PHP
      3-Essa mesma máquina conecta outro banco SQL Server de outro cliente
      Ou seja, o mesmo programa conecta o mesmo banco mas de outra máquina e a mesma máquina consegue conectar outro banco SQL.
      O que pode ser?
    • Por mamotinho
      Olá, pessoal mais uma vez venho pedi a ajuda de vocês estou com um problema ao roda uma query que montei, eu sou iniciante na area e não tenho muito conhecimento então o codigo que fiz foi parte de meu conhecimento básico. bom o que eu quero resolver nessa query é o seguinte, eu quero consultar uma tabela e nela pega todos os registros com a a data vencida e lista ela dentro do while em seguida retornar dentro desse if o valor da coluna de cada uma exemplo de como fiz e ficou com loop infinito.

       
      declare @id int declare @getdate datetime select @id = IDCadastrado, @getdate = RegDate from BancoTeste.dbo.MinhaTabela where RegDate < getdate() while @id is not null begin select * from BancoTeste.dbo.MinhaTabela where IDCadastrado = @id end quando eu executo isso ai ele executa infinitamente o valor do primeiro registro repetidamente.
    • Por rdavisp
      Senhores, recorro a ajuda de vocês pois venho do banco de dados Oracle e tenho encontrado certa dificuldade para trabalhar com o SQL Server 2012, mais especificamente com a linguagem Transact-SQL. Pelo o que eu tenho percebido, não se trata de uma linguagem fortemente tipada em relação ao gerenciamento de escopo de variáveis. Exemplo, como as variavéis de cursores, que caso a primeira interação atribua valores válidos para as variáveis e caso na segunda volta do looping seja retornado nulo é mantido o valor da primeira interação. Outra coisa que eu estou tentando entender é o fato da seguinte query dentro de um bloco não retornar resultado dinamincamente na execução:
      SELECT @IDSALAMODELO = SM.ID
            ,@NOMEGRUPO    = G.NOME
        FROM CRT C
            ,GRUPO G
            ,SALAMODELO SM
            ,EMPRESA E
       WHERE C.IDGRUPO      = G.ID
         AND G.IDSALAMODELO = SM.ID
         AND SM.IDEMPRESA   = E.ID
         --
         AND C.ID       = CAST(@CRT AS INT)
         AND C.ATIVO    = @ATIVO
         AND G.ATIVO    = @ATIVO
         AND G.IDINTAKE = @INTAKEATUAL
         AND E.ID       = @IDEMPRESA
      E quando a executo numa janela de consulta com os parametros hardcode ela me retorna resultado. Não estou limpando elas em momento algum e ja tentei deixar os valores hardcode dentro do bloco, mas ainda assim, o resultado permance o mesmo, ou seja, não me retorna resultado.
      Por isso, se possível, gostaria da opinião de vocês para que eu posso solucionar esse problema.
      Grato.
    • Por Bruno_Sam
      Preciso buscar em todas as tabelas do banco um nome de cliente. Não sei quais tabelas contem o nome desse cliente e preciso pois esta errado o nome. Existe algum select que faça busca de um valor em todas as tabelas e fala quais estão???
       
      Obs:Não posso criar tabela temporaria no banco.
×

Informação importante

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