RES: RES: [oracle_br] [OFF] - Ajuda com GROUP BY em SQL
É o seguinte Qual é chave primaria ou seja qual a coluna que está trazendo que não pode duplicar. Um exemplo: seletc CPF ,NOME ,IDADE >From tabela Sabe-se que o CPF é chave, então voce dá um max no nome, idade e não precisa referenciar no group by... Ou então não colocar o max e poe todas as colunas do select no group by. E outra, no subselect voce deve colocar uma clausula: sum, max, count ... Isso só se voce trazer um campo em especifico. SELECT v.* -- nessa parte, todas as colunas que está trazendo tem que colocar no group by ou se encaixar no que eu disse acima. Espero ter ajudado em algo ... []'s Wellington -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Pedro de Souza Silva Junior Enviada em: quarta-feira, 14 de novembro de 2007 09:22 Para: oracle_br@yahoogrupos.com.br Assunto: Res: RES: [oracle_br] [OFF] - Ajuda com GROUP BY em SQL Acabei conseguindo acertar o SQL. Após fazer a alteração de colocar o GROUP BY depois do WHERE deu o seguinte erro: Msg 8120, Level 16, State 1, Line 2 Column 'v.codVenda' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. Não foi só esta coluna, foram várias, então inclui essas colunas no GROUP BY e funcionou perfeitamente. Mais uma vez obrigado a todos pela ajuda :) - Mensagem original De: Wellington Martins Flaviano <[EMAIL PROTECTED]> Para: oracle_br@yahoogrupos.com.br Enviadas: Quarta-feira, 14 de Novembro de 2007 9:48:44 Assunto: RES: [oracle_br] [OFF] - Ajuda com GROUP BY em SQL Pedro. A principio está com erro de ordem na sintaxe ... Primeiro voce colocar o WHERE, depois o GROUP BY e por último o ORDER BY SELECT v.* , c.Nome as [Criador] , u.Nome [Unidade] , a.Nome as [Alterador] , ba.Nome AS [Banco] , cli.Nome as [Cliente] , (SELECT COUNT(codItem) FROM Itens_Vendas WHERE codVenda = v.codVenda AND Excluido = 0) AS [QtdeItem] , (SELECT Nome FROM Formas_Pagamento WHERE codFormaPgto = v.codFormaPgto AND Excluido = 0) AS [FormaPgto] , vend.Nome as [Vendedor] , (select codTipoCliente from Clientes where codCliente = v.codCliente AND Excluido=0) AS [codTipoCliente] , (SELECT TOP 1 Comissao FROM Clientes WHERE codCliente = V.codUsuarioCad) AS [Comissao] FROM (((Vendas v LEFT JOIN Clientes c ON v.codUsuarioCad = c.codCliente) INNER JOIN Unidades u ON v.codUnidade = u.codUnidade) LEFT JOIN Clientes a ON v.codUsuarioCad = a.codCliente) LEFT JOIN Clientes cli ON v.codCliente = cli.codCliente) LEFT JOIN Conta_Correntes_ Unidades cun ON v.codConta = cun.codConta) LEFT JOIN Bancos ba ON cun.codBanco = ba.codBanco) LEFT JOIN Clientes vend ON v.codVendedor = vend.codCliente) WHERE v.Excluido = 0 GROUP BY FormaPgto ORDER BY v.dtVenda DESC Testa ai []'s Wellington -Mensagem original - De: [EMAIL PROTECTED] os.com.br [mailto:[EMAIL PROTECTED] os.com.br] Em nome de Pedro de Souza Silva Junior Enviada em: terça-feira, 13 de novembro de 2007 12:34 Para: OracleBr Assunto: [oracle_br] [OFF] - Ajuda com GROUP BY em SQL Pessoal, tenho uma clausula SQL onde preciso fazer uma agrupamento pelo campo forma de pagamento, mais está me retornando erro, será que alguem poderia me dar uma orientação de como conseguir executar esta query? Estou usando SQL Server, mais como se trata de SQL acho que não haveria problema em pedir ajuda aos amigos de ORACLE. :) SELECT v.* , c.Nome as [Criador] , u.Nome [Unidade] , a.Nome as [Alterador] , ba.Nome AS [Banco] , cli.Nome as [Cliente] , (SELECT COUNT(codItem) FROM Itens_Vendas WHERE codVenda = v.codVenda AND Excluido = 0) AS [QtdeItem] , (SELECT Nome FROM Formas_Pagamento WHERE codFormaPgto = v.codFormaPgto AND Excluido = 0) AS [FormaPgto] , vend.Nome as [Vendedor] , (select codTipoCliente from Clientes where codCliente = v.codCliente AND Excluido=0) AS [codTipoCliente] , (SELECT TOP 1 Comissao FROM Clientes WHERE codCliente = V.codUsuarioCad) AS [Comissao] FROM (((Vendas v LEFT JOIN Clientes c ON v.codUsuarioCad = c.codCliente) INNER JOIN Unidades u ON v.codUnidade = u.codUnidade) LEFT JOIN Clientes a ON v.codUsuarioCad = a.codCliente) LEFT JOIN Clientes cli ON v.codCliente = cli.codCliente) LEFT JOIN Conta_Correntes_ Unidades cun ON v.codConta = cun.codConta) LEFT JOIN Bancos ba ON cun.codBanco = ba.codBanco) LEFT JOIN Clientes vend ON v.codVendedor = vend.codCliente) GROUP BY FormaPgto WHERE v.Excluido = 0 ORDER BY v.dtVenda DESC Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! http://br.mail. yahoo.com/ [As partes desta mensagem que não continham texto foram removidas] >Apostilas » Dicas e Exemplos » Funções » Mundo Oracle »
Res: RES: [oracle_br] [OFF] - Ajuda com GROUP BY em SQL
Acabei conseguindo acertar o SQL. Após fazer a alteração de colocar o GROUP BY depois do WHERE deu o seguinte erro: Msg 8120, Level 16, State 1, Line 2 Column 'v.codVenda' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. Não foi só esta coluna, foram várias, então inclui essas colunas no GROUP BY e funcionou perfeitamente. Mais uma vez obrigado a todos pela ajuda :) - Mensagem original De: Wellington Martins Flaviano <[EMAIL PROTECTED]> Para: oracle_br@yahoogrupos.com.br Enviadas: Quarta-feira, 14 de Novembro de 2007 9:48:44 Assunto: RES: [oracle_br] [OFF] - Ajuda com GROUP BY em SQL Pedro. A principio está com erro de ordem na sintaxe ... Primeiro voce colocar o WHERE, depois o GROUP BY e por último o ORDER BY SELECT v.* , c.Nome as [Criador] , u.Nome [Unidade] , a.Nome as [Alterador] , ba.Nome AS [Banco] , cli.Nome as [Cliente] , (SELECT COUNT(codItem) FROM Itens_Vendas WHERE codVenda = v.codVenda AND Excluido = 0) AS [QtdeItem] , (SELECT Nome FROM Formas_Pagamento WHERE codFormaPgto = v.codFormaPgto AND Excluido = 0) AS [FormaPgto] , vend.Nome as [Vendedor] , (select codTipoCliente from Clientes where codCliente = v.codCliente AND Excluido=0) AS [codTipoCliente] , (SELECT TOP 1 Comissao FROM Clientes WHERE codCliente = V.codUsuarioCad) AS [Comissao] FROM (((Vendas v LEFT JOIN Clientes c ON v.codUsuarioCad = c.codCliente) INNER JOIN Unidades u ON v.codUnidade = u.codUnidade) LEFT JOIN Clientes a ON v.codUsuarioCad = a.codCliente) LEFT JOIN Clientes cli ON v.codCliente = cli.codCliente) LEFT JOIN Conta_Correntes_ Unidades cun ON v.codConta = cun.codConta) LEFT JOIN Bancos ba ON cun.codBanco = ba.codBanco) LEFT JOIN Clientes vend ON v.codVendedor = vend.codCliente) WHERE v.Excluido = 0 GROUP BY FormaPgto ORDER BY v.dtVenda DESC Testa ai []'s Wellington -Mensagem original - De: [EMAIL PROTECTED] os.com.br [mailto:[EMAIL PROTECTED] os.com.br] Em nome de Pedro de Souza Silva Junior Enviada em: terça-feira, 13 de novembro de 2007 12:34 Para: OracleBr Assunto: [oracle_br] [OFF] - Ajuda com GROUP BY em SQL Pessoal, tenho uma clausula SQL onde preciso fazer uma agrupamento pelo campo forma de pagamento, mais está me retornando erro, será que alguem poderia me dar uma orientação de como conseguir executar esta query? Estou usando SQL Server, mais como se trata de SQL acho que não haveria problema em pedir ajuda aos amigos de ORACLE. :) SELECT v.* , c.Nome as [Criador] , u.Nome [Unidade] , a.Nome as [Alterador] , ba.Nome AS [Banco] , cli.Nome as [Cliente] , (SELECT COUNT(codItem) FROM Itens_Vendas WHERE codVenda = v.codVenda AND Excluido = 0) AS [QtdeItem] , (SELECT Nome FROM Formas_Pagamento WHERE codFormaPgto = v.codFormaPgto AND Excluido = 0) AS [FormaPgto] , vend.Nome as [Vendedor] , (select codTipoCliente from Clientes where codCliente = v.codCliente AND Excluido=0) AS [codTipoCliente] , (SELECT TOP 1 Comissao FROM Clientes WHERE codCliente = V.codUsuarioCad) AS [Comissao] FROM (((Vendas v LEFT JOIN Clientes c ON v.codUsuarioCad = c.codCliente) INNER JOIN Unidades u ON v.codUnidade = u.codUnidade) LEFT JOIN Clientes a ON v.codUsuarioCad = a.codCliente) LEFT JOIN Clientes cli ON v.codCliente = cli.codCliente) LEFT JOIN Conta_Correntes_ Unidades cun ON v.codConta = cun.codConta) LEFT JOIN Bancos ba ON cun.codBanco = ba.codBanco) LEFT JOIN Clientes vend ON v.codVendedor = vend.codCliente) GROUP BY FormaPgto WHERE v.Excluido = 0 ORDER BY v.dtVenda DESC Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! http://br.mail. yahoo.com/ [As partes desta mensagem que não continham texto foram removidas] >Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package » >Procedure » Scripts » Tutoriais acesse: >http://www.oraclebr .com.br/codigo/ ListaCodigo. php - - - - - - >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira >responsabilidade de seus remetentes. Acesse: http://www.mail- archive.com/ oracle_br@ yahoogrupos. com.br/ - - - - - - >O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: >http://www.oraclebr .com.br/ - - - - - - Links do Yahoo! Grupos Esta mensagem pode conter informação confidencial e/ou privilegiada. Se você não for o destinatário ou a pessoa autorizada a receber esta mensagem, não pode usar, copiar ou divulgar as informações nela contidas ou tomar qualquer ação baseada nessas informações. Se você recebeu esta mensagem por engano,
RES: [oracle_br] [OFF] - Ajuda com GROUP BY em SQL
Pedro. A principio está com erro de ordem na sintaxe ... Primeiro voce colocar o WHERE, depois o GROUP BY e por último o ORDER BY SELECT v.* , c.Nome as [Criador] , u.Nome [Unidade] , a.Nome as [Alterador] , ba.Nome AS [Banco] , cli.Nome as [Cliente] , (SELECT COUNT(codItem) FROM Itens_Vendas WHERE codVenda = v.codVenda AND Excluido = 0) AS [QtdeItem] , (SELECT Nome FROM Formas_Pagamento WHERE codFormaPgto = v.codFormaPgto AND Excluido = 0) AS [FormaPgto] , vend.Nome as [Vendedor] , (select codTipoCliente from Clientes where codCliente = v.codCliente AND Excluido=0) AS [codTipoCliente] , (SELECT TOP 1 Comissao FROM Clientes WHERE codCliente = V.codUsuarioCad) AS [Comissao] FROM (((Vendas v LEFT JOIN Clientes c ON v.codUsuarioCad = c.codCliente) INNER JOIN Unidades u ON v.codUnidade = u.codUnidade) LEFT JOIN Clientes a ON v.codUsuarioCad = a.codCliente) LEFT JOIN Clientes cli ON v.codCliente = cli.codCliente) LEFT JOIN Conta_Correntes_Unidades cun ON v.codConta = cun.codConta) LEFT JOIN Bancos ba ON cun.codBanco = ba.codBanco) LEFT JOIN Clientes vend ON v.codVendedor = vend.codCliente) WHERE v.Excluido = 0 GROUP BY FormaPgto ORDER BY v.dtVenda DESC Testa ai []'s Wellington -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Pedro de Souza Silva Junior Enviada em: terça-feira, 13 de novembro de 2007 12:34 Para: OracleBr Assunto: [oracle_br] [OFF] - Ajuda com GROUP BY em SQL Pessoal, tenho uma clausula SQL onde preciso fazer uma agrupamento pelo campo forma de pagamento, mais está me retornando erro, será que alguem poderia me dar uma orientação de como conseguir executar esta query? Estou usando SQL Server, mais como se trata de SQL acho que não haveria problema em pedir ajuda aos amigos de ORACLE. :) SELECT v.* , c.Nome as [Criador] , u.Nome [Unidade] , a.Nome as [Alterador] , ba.Nome AS [Banco] , cli.Nome as [Cliente] , (SELECT COUNT(codItem) FROM Itens_Vendas WHERE codVenda = v.codVenda AND Excluido = 0) AS [QtdeItem] , (SELECT Nome FROM Formas_Pagamento WHERE codFormaPgto = v.codFormaPgto AND Excluido = 0) AS [FormaPgto] , vend.Nome as [Vendedor] , (select codTipoCliente from Clientes where codCliente = v.codCliente AND Excluido=0) AS [codTipoCliente] , (SELECT TOP 1 Comissao FROM Clientes WHERE codCliente = V.codUsuarioCad) AS [Comissao] FROM (((Vendas v LEFT JOIN Clientes c ON v.codUsuarioCad = c.codCliente) INNER JOIN Unidades u ON v.codUnidade = u.codUnidade) LEFT JOIN Clientes a ON v.codUsuarioCad = a.codCliente) LEFT JOIN Clientes cli ON v.codCliente = cli.codCliente) LEFT JOIN Conta_Correntes_Unidades cun ON v.codConta = cun.codConta) LEFT JOIN Bancos ba ON cun.codBanco = ba.codBanco) LEFT JOIN Clientes vend ON v.codVendedor = vend.codCliente) GROUP BY FormaPgto WHERE v.Excluido = 0 ORDER BY v.dtVenda DESC Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! http://br.mail.yahoo.com/ [As partes desta mensagem que não continham texto foram removidas] >Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package » >Procedure » Scripts » Tutoriais acesse: >http://www.oraclebr.com.br/codigo/ListaCodigo.php -- >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira >responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- >O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: >http://www.oraclebr.com.br/ Links do Yahoo! Grupos Esta mensagem pode conter informação confidencial e/ou privilegiada. Se você não for o destinatário ou a pessoa autorizada a receber esta mensagem, não pode usar, copiar ou divulgar as informações nela contidas ou tomar qualquer ação baseada nessas informações. Se você recebeu esta mensagem por engano, por favor avise imediatamente o remetente, respondendo o e-mail e em seguida apague-o. Agradecemos sua cooperação. This message may contain confidential and/or privileged information. If you are not the addressee or authorized to receive this for the addressee, you must not use, copy, disclose or take any action based on this message or any information herein. If you have received this message in error, please advise the sender immediately by reply e-mail and delete this message. Thank you for your cooperation. [As partes desta mensagem que não continham texto foram removidas]
RES: [oracle_br] [OFF] - Ajuda com GROUP BY em SQL
Pedro. A principio está com erro de ordem na sintaxe ... Primeiro voce colocar o WHERE, depois o GROUP BY e por último o ORDER BY SELECT v.* , c.Nome as [Criador] , u.Nome [Unidade] , a.Nome as [Alterador] , ba.Nome AS [Banco] , cli.Nome as [Cliente] , (SELECT COUNT(codItem) FROM Itens_Vendas WHERE codVenda = v.codVenda AND Excluido = 0) AS [QtdeItem] , (SELECT Nome FROM Formas_Pagamento WHERE codFormaPgto = v.codFormaPgto AND Excluido = 0) AS [FormaPgto] , vend.Nome as [Vendedor] , (select codTipoCliente from Clientes where codCliente = v.codCliente AND Excluido=0) AS [codTipoCliente] , (SELECT TOP 1 Comissao FROM Clientes WHERE codCliente = V.codUsuarioCad) AS [Comissao] FROM (((Vendas v LEFT JOIN Clientes c ON v.codUsuarioCad = c.codCliente) INNER JOIN Unidades u ON v.codUnidade = u.codUnidade) LEFT JOIN Clientes a ON v.codUsuarioCad = a.codCliente) LEFT JOIN Clientes cli ON v.codCliente = cli.codCliente) LEFT JOIN Conta_Correntes_Unidades cun ON v.codConta = cun.codConta) LEFT JOIN Bancos ba ON cun.codBanco = ba.codBanco) LEFT JOIN Clientes vend ON v.codVendedor = vend.codCliente) WHERE v.Excluido = 0 GROUP BY FormaPgto ORDER BY v.dtVenda DESC Testa ai []'s Wellington -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Pedro de Souza Silva Junior Enviada em: terça-feira, 13 de novembro de 2007 12:34 Para: OracleBr Assunto: [oracle_br] [OFF] - Ajuda com GROUP BY em SQL Pessoal, tenho uma clausula SQL onde preciso fazer uma agrupamento pelo campo forma de pagamento, mais está me retornando erro, será que alguem poderia me dar uma orientação de como conseguir executar esta query? Estou usando SQL Server, mais como se trata de SQL acho que não haveria problema em pedir ajuda aos amigos de ORACLE. :) SELECT v.* , c.Nome as [Criador] , u.Nome [Unidade] , a.Nome as [Alterador] , ba.Nome AS [Banco] , cli.Nome as [Cliente] , (SELECT COUNT(codItem) FROM Itens_Vendas WHERE codVenda = v.codVenda AND Excluido = 0) AS [QtdeItem] , (SELECT Nome FROM Formas_Pagamento WHERE codFormaPgto = v.codFormaPgto AND Excluido = 0) AS [FormaPgto] , vend.Nome as [Vendedor] , (select codTipoCliente from Clientes where codCliente = v.codCliente AND Excluido=0) AS [codTipoCliente] , (SELECT TOP 1 Comissao FROM Clientes WHERE codCliente = V.codUsuarioCad) AS [Comissao] FROM (((Vendas v LEFT JOIN Clientes c ON v.codUsuarioCad = c.codCliente) INNER JOIN Unidades u ON v.codUnidade = u.codUnidade) LEFT JOIN Clientes a ON v.codUsuarioCad = a.codCliente) LEFT JOIN Clientes cli ON v.codCliente = cli.codCliente) LEFT JOIN Conta_Correntes_Unidades cun ON v.codConta = cun.codConta) LEFT JOIN Bancos ba ON cun.codBanco = ba.codBanco) LEFT JOIN Clientes vend ON v.codVendedor = vend.codCliente) GROUP BY FormaPgto WHERE v.Excluido = 0 ORDER BY v.dtVenda DESC Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! http://br.mail.yahoo.com/ [As partes desta mensagem que não continham texto foram removidas] >Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package » >Procedure » Scripts » Tutoriais acesse: >http://www.oraclebr.com.br/codigo/ListaCodigo.php -- >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira >responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- >O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: >http://www.oraclebr.com.br/ Links do Yahoo! Grupos This message may contain confidential and/or privileged information. If you are not the addressee or authorized to receive this for the addressee, you must not use, copy, disclose or take any action based on this message or any information herein. If you have received this message in error, please advise the sender immediately by reply e-mail and delete this message. Thank you for your cooperation. [As partes desta mensagem que não continham texto foram removidas]