Ir para conteúdo

POWERED BY:

Arquivado

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

SerraVentura

O q tem de errado nessa string??

Recommended Posts

Microsoft][ODBC SQL Server Driver]

Column 'upload.id' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause. 

 

/upload/MeioAlbum.asp, line 26

 

 

select *, sum(qtd) as total from upload where status = 'inativo' order by newid()

 

o q tem de errado nessa string???

 

 

Valew!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Colega,Você está tentando selecionar todas as colunas da tabela (*) e ao mesmo tempo utilizar uma função de agregação (sum(...)). Você deve utilizar Group By ou remover a seleção das colunas (optar).Qual é a necessidade? Talvez possamos pensar numa alternativa/solução.

Compartilhar este post


Link para o post
Compartilhar em outros sites

MInha necessidade é pegar o valor do campo QTD e tbm pegar o valor da soma desse campo...para fazer um calculo de %%%...entaum eu preciso do valor do campo unico e o valor do mesmo de todos BD...vou fazer QTD * 100 / totalpor isso tentei fazer ao mesmo tempo...mas pelo visto naum tem como....qual seria a outra solução?valew!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Colega,Neste caso você pode combinar funções de agregação sem problemas. Exemplo:

SELECT (COUNT(*) * 100)/SUM(VALOR) FROM TABELA 

Você não pode "misturar" result set com valores obtidos em agregações sem o uso de group by.

Compartilhar este post


Link para o post
Compartilhar em outros sites

select *, (qtd * 100) / sum(qtd) from upload where status = 'inativo' order by newid()putz...minha string ficaria assim...? :blink:

Compartilhar este post


Link para o post
Compartilhar em outros sites

select *, (qtd * 100) / sum(qtd) from upload where status = 'inativo' order by newid()putz...minha string ficaria assim...? :blink:

Colega,Você quer uma coluna com o percetual da quantidade de cada registro em relação a quantidade total? É isto? Desculpe, mas ainda não entendi sua questão.Sua string de SQL não pode ser construída da forma acima em face de conter agregações e resultset. Vamos fazer uma Stored Procedure para resolver o problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

é o seguinte ... é um sisteminha de votação tipo cada candidato tem seus numeros de votos esses votos ficam no campo QTD na tabela entaum eu preciso pegar esse numero de votos desse candidato multiplicar por 100 e dividir pelo total de votos de todos os candidatos q estaum no BD por esse motivo o SUM....entaum do QTD eu tiro um valor unico e o valor total usando o SUM...naum sei se expliquei direito mais é isso...e eu preciso fazer isso td na mesma string... pq todos os valores precisam estar no mesmo recordset...obrigado aí pela atenção...valew

Compartilhar este post


Link para o post
Compartilhar em outros sites

Colega,

 

Pode ter alguma solução mais simples, mas a que eu considerei de menor esforço no momento foi:

 

- Construir uma SP para conter um cursor:

 

DECLARE @GRANDE_TOTAL AS NUMERIC(10)
DECLARE @ID AS CHAR(10)
DECLARE @TOTAL AS NUMERIC(10)


SELECT @GRANDE_TOTAL = SUM(CAN_QTD)
FROM CANDIDATOS DECLARE TABELA 
CURSOR FOR SELECT CAN_ID, SUM(CAN_QTD) AS QTDE
FROM CANDIDATOS GROUP BY CAN_ID

OPEN TABELA

FETCH NEXT FROM TABELA INTO @ID, @TOTAL

WHILE @@FETCH_STATUS=0
BEGIN PRINT @ID + ' ' + Convert(Char(10),@total) + ' ' + Convert(Char(20),(@total*100)/@Grande_Total)
 FETCH NEXT FROM TABELA INTO @ID, @TOTAL
END

CLOSE TABELA
DEALLOCATE TABELA 

 

Veja os dados que inseri numa tabela para testes:

 

select * from candidatos 

can_id     can_qtd      ---------- ------------ 1          11          11          11          11          11          11          11          11          12          12          32          53          53          151          5(15 row(s) affected)

Resultado:

 

1          14         32.55813953488      2          9          20.93023255813      3          20         46.51162790697      

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.