Ir para conteúdo

POWERED BY:

Arquivado

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

HiTech-SP

Ordenar por soma de campos

Recommended Posts

Olá, tenho o seguinte problema:Tenho uma tabela, tem os campos MES e PONTOSno campo mes é armazenado o mes e sua respectiva quantidade de pontos..fica +/- assim:----------------------nome mes pontos jose 1 500 joao 2 550 jose 3 600 jose 4 525------------------------na pagina total.asp preciso ordenar os registros pela soma dos pontos de todos os meses..quem tem mais pontos somando todos os meses..alguem tem idéia de como fazer isso ?deve ser por matriz neh ?agradeço a atençãoHiTech-SP

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa é fácil parceiro... Baseado na "tabela" que você escreveu para nos explicar sua dúvida...

 

SELECT SUM(pontos) AS pontosTotais, Nome, Mes FROM <tabela> WHERE Mes = <criterio> GROUP BY Nome, Mes ORDER BY pontosTotais DESC

Isso deve resolver...

 

- Fernando Botelho

Compartilhar este post


Link para o post
Compartilhar em outros sites

fernando, aparece esse erro com a seguinte string:sql = "SELECT SUM(PTS_CMP) AS pontosTotais, PTS_CSE_SAP, PTS_MES FROM PTS WHERE PTS_Mes BETWEEN 1 AND 12 "sql = sql + "GROUP BY PTS_CSE_SAP, PTS_MES ORDER BY pontosTotais DESC"---=====ERRO====--------Microsoft JET Database Engine erro '80040e10' No value given for one or more required parameters. /Ciagroup/dsp_regiao.asp, line 133 obrigado pela atenção !!

Compartilhar este post


Link para o post
Compartilhar em outros sites

é o seguinte... eu fiz aqui e funcionou... aqui é um SQL Server 2000... repare que o NOME DE UM CAMPO, é uma consulta inteira (observe bem o WHERE). Adapte o caso para o seu problema.

SELECT campoID, campo1, campo2,  (SELECT SUM(valor) FROM TABELA2 WHERE TABELA1.campoID = TABELA2.campoID) AS totalFROM TABELA1ORDER BY total ASC

funfou?! :) OBS: a cláusula do Fernando tb funciona, pelo menos no SQL Server 2000

Compartilhar este post


Link para o post
Compartilhar em outros sites

é o seguinte... eu fiz aqui e funcionou... aqui é um SQL Server 2000... repare que o NOME DE UM CAMPO, é uma consulta inteira (observe bem o WHERE). Adapte o caso para o seu problema.

SELECT campoID, campo1, campo2,  (SELECT SUM(valor) FROM TABELA2 WHERE TABELA1.campoID = TABELA2.campoID) AS totalFROM TABELA1ORDER BY total ASC

funfou?! :)
mas como eu faço isso com somente 1 tabela ????

Compartilhar este post


Link para o post
Compartilhar em outros sites

me enganei... naum é tabela2.... TABELA2 é apenas um alias para a tabela 1

 

SELECT campoID, campo1, campo2, (SELECT SUM(valor) FROM TABELA1 AS TABELA2 WHERE TABELA1.campoID = TABELA2.campoID) AS total

FROM TABELA1

ORDER BY total ASC

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz com esse sql:SELECT PTS_CSE_SAP, PTS_MES,PTS_CMP,PTS_REM , (SELECT SUM(valor) FROM PTS WHERE PTS.PTS_CSE_SAP = PTS.PTS_CSE_SAP) AS total FROM PTS ORDER BY total ASC e deu esse erro:Microsoft JET Database Engine erro '80040e10' No value given for one or more required parameters. dsp_regiao.asp, line 144 144 é a linha que executa a sql... :) :o :o

Compartilhar este post


Link para o post
Compartilhar em outros sites

este é outro problema... algum campo aí tá escrito errado

Compartilhar este post


Link para o post
Compartilhar em outros sites

pow kra, não tem mais o que arrumar nessa sql:SELECT PTS_CSE_SAP, PTS_MES,PTS_CMP,PTS_REM , (SELECT SUM(PTS_CMP) FROM PTS WHERE PTS.PTS_CSE_SAP = PTS.PTS_CSE_SAP) AS total FROM PTS ORDER BY total ASC que coisa complicada viu..to precisando compra um livro de sql...heheehhee

Compartilhar este post


Link para o post
Compartilhar em outros sites

vcs sabem aonde u posso procurar uma solução pra isso ??será que os kra do imasters que tem coluna respondem se eu perguntar ??meu projeto depende disso..to fudid...

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou te dar uma opção...cria um campo total que soma os postos até aquele mes, entào vai ter o total de todos certo? tipo janeiro 11 fevereiro vai ser 11 mais 10 = 21então use...retire a conexão MAXIMO NUMERO DO BANCOsql = " SELECT Max(CodProd) as MaiorCodigo FROM TblProduto "SET RSConsultar=server.CreateObject ("ADODB.RecordSet")SET ConBanco=server.CreateObject ("ADODB.Connection") ConBanco.open("Driver={Microsoft Access Driver (*.mdb)};DBQ=" & SERVER.MAPPATH(caminho))SET RSConsultar = ConBanco.execute (sql)response.Write RSConsultar("MaiorCodigo")response.end

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou te dar uma opção...cria um campo total que soma os postos até aquele mes, entào vai ter o total de todos certo? tipo janeiro 11 fevereiro vai ser 11 mais 10 = 21então use...retire a conexão MAXIMO NUMERO DO BANCOsql = " SELECT Max(CodProd) as MaiorCodigo FROM TblProduto "SET RSConsultar=server.CreateObject ("ADODB.RecordSet")SET ConBanco=server.CreateObject ("ADODB.Connection") ConBanco.open("Driver={Microsoft Access Driver (*.mdb)};DBQ=" & SERVER.MAPPATH(caminho))SET RSConsultar = ConBanco.execute (sql)response.Write RSConsultar("MaiorCodigo")response.end

acho q você não entendeu meu problema kra..tipo, eu tenho uma tabela assim..CODIGO_ENGENHEIRO---------PTS_CMP---------PTS_REM------PTS_EXT-----MES 10203--------------------------200------------------10-------------10-----------1 10203---------------------------20--------------------2--------------5------------2 10203---------------------------25--------------------7--------------2------------3 10204---------------------------20-------------------14-------------8-------------1 10204---------------------------40-------------------21-------------4-------------4 10204---------------------------60-------------------28-------------3-------------6 10208---------------------------65-------------------21-------------4-------------2 10208---------------------------69-------------------22-------------7-------------4 10208---------------------------70-------------------25-------------9-------------9a seleção deveria pegar todos campos iguais PELO CODIGO_ENGENHEIRO , somar e ORDENAR PELO RESULTADO DESSA SOMA.Tipo assim, se eu ordenasse pelo PTS_CMP o resultado ficaria assimCODIGO_ENGENHEIRO PTS_CMP 10203 245 10208 204 10204 120entenderam ???nunca tive tanto problema com uma string sql viu...tah f***, se alguem puder me ajudar vou ficar mto agradecido !!até maisDanilo Feltrini

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me manda o script .sql da estrutura da tabela, e o conteúdo dela (se não for restrito).Se for SQL SERVER 2000, a minha string funciona... E vou fazê-la para você...- Fernando Botelho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me manda o script .sql da estrutura da tabela, e o conteúdo dela (se não for restrito).Se for SQL SERVER 2000, a minha string funciona... E vou fazê-la para você...- Fernando Botelho

é access...funciona ??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixa eu ver se eu entendi...você vai fazer um select de todos os engenheiros somas as colunas com valores de acordo com o código do engenheiro e depois mostrar todos os engenheiros porém ordenados pela soma dos valor, do > para o <?Se não for isso .... então não entendi nada.!!!! <_<

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.