DUVIDA SIMPLES SOBRE SQL
Pessoal,
Tenho uma dúvida sobre função agregada no SQL Server 2005.
Se eu faço o seguinte, para pegar a última venda de cada produto:
Select Produto,Quant,Valor,Sum(Data) From Tb_VendaProd
é emitida uma mensagem de erro!
Mas,se eu faço:
Select Produto, Sum(Data) From Tb_VendaProd Group by Produto
Funciona.
A dúvida é a seguinte:
Eu posso dizer, que somente posso usar funções agregadas na clausula SELECT
se for junto com Group By? Porque o SQL, nao aceita a primeira instrução?
Tenho uma dúvida sobre função agregada no SQL Server 2005.
Se eu faço o seguinte, para pegar a última venda de cada produto:
Select Produto,Quant,Valor,Sum(Data) From Tb_VendaProd
é emitida uma mensagem de erro!
Mas,se eu faço:
Select Produto, Sum(Data) From Tb_VendaProd Group by Produto
Funciona.
A dúvida é a seguinte:
Eu posso dizer, que somente posso usar funções agregadas na clausula SELECT
se for junto com Group By? Porque o SQL, nao aceita a primeira instrução?
no caso do sum() sim, ele soma os valores do campo informado, e se vc não agrupar ele não somara pq não tm o que somar... entende?
na verdade o Sum explicitamente soma a coluna inteira a não se que seja passado um filtro like ou where ou between
Pessoal,
Me desculpe, na verdade a função agregada que estou usando é o MAX:
Select Produto,Quant,Valor,Max(Data) From Tb_VendaProd
é emitida uma mensagem de erro!
Mas,se eu faço:
Select Produto, MAX(Data) From Tb_VendaProd Group by Produto
Assim funciona
Eu pensei que a primeira expressão deveria funcionar, pois ele retornaria somente os registros com a Data mais recente.
Meu raciocineio esta errado?
Me desculpe, na verdade a função agregada que estou usando é o MAX:
Select Produto,Quant,Valor,Max(Data) From Tb_VendaProd
é emitida uma mensagem de erro!
Mas,se eu faço:
Select Produto, MAX(Data) From Tb_VendaProd Group by Produto
Assim funciona
Eu pensei que a primeira expressão deveria funcionar, pois ele retornaria somente os registros com a Data mais recente.
Meu raciocineio esta errado?
Vamos pensar um pouco...
Qual é o resultado que a segunda expressão retorna? O maior data por produto, certo? Por isso que vc incluiu a cláusula Group By por produto, certo?
Agora vamos ver a primeira expressão...
Qual é o resultado que deveria retornar (que eu acho que vc está querendo)? A maior data por produto, quantidade e valor (não vejo lógica nessa expressão, mas, vamos lá), certo?
Então vc deveria incluir a cláusula Group By por produto, quantidade e valor.
O que extamente vc está querendo obter nessa query?
Qual é o resultado que a segunda expressão retorna? O maior data por produto, certo? Por isso que vc incluiu a cláusula Group By por produto, certo?
Agora vamos ver a primeira expressão...
Qual é o resultado que deveria retornar (que eu acho que vc está querendo)? A maior data por produto, quantidade e valor (não vejo lógica nessa expressão, mas, vamos lá), certo?
Então vc deveria incluir a cláusula Group By por produto, quantidade e valor.
O que extamente vc está querendo obter nessa query?
Eh o seguinte, vc pode usar o SUM sem agrupar, desde que sua selecao nao contenha outro campo q nao o que esta sendo soma.
Tópico encerrado , respostas não são mais permitidas