Autor Tópico: Ajuda em um select  (Lida 838 vezes)

Jean Matos

  • Expert
  • *****
  • Mensagens: 956
    • Gestão de Construtoras
    • Email
Ajuda em um select
« Online: Junho 27, 2013, 09:10:08 am »
Prezados, estou fazendo um select que está me fritando a cuca.. o foda é que é muito simples.

Código: [Selecionar]
SELECT     MIN(dbo.abastecimentos.km) AS inicial, MAX(dbo.abastecimentos.km) AS final, MAX(dbo.abastecimentos.km) - MIN(dbo.abastecimentos.km) AS result,
                      dbo.veiculos.limitekm, dbo.veiculos.placa, dbo.veiculos.condutor
FROM         dbo.abastecimentos INNER JOIN
                      dbo.veiculos ON dbo.abastecimentos.placa = dbo.veiculos.idveiculo
WHERE     (dbo.abastecimentos.data BETWEEN CONVERT(DATETIME, '[inicial]', 102) AND CONVERT(DATETIME, '[final]', 102))
GROUP BY dbo.veiculos.placa, dbo.veiculos.limitekm, dbo.veiculos.condutor

se as informações no banco de dados está desta forma :

491   06/05/2013   321.809
509   13/05/2013   322.810
512   15/05/2013   323.401
520   20/05/2013   323.806
527   22/05/2013   324.500
527   22/05/2013   324.500
541   27/05/2013   325.002

o resultado é o seguinte :

inicial          final        result    limitekm     placa         condutor.
321809   325002   3193   0          GML2849   Edson Coimbra Laube

até qui tá certo..


no entanto se as informações estão um pouco fora de ordem:

09/05/2013   106.083
31/05/2013   111.408
02/05/2013   104.690
22/05/2013   109.410
15/05/2013   107.659
17/05/2013   108.463
24/05/2013   110.042
06/05/2013   105.240
27/05/2013   110.365
13/05/2013   107.116
20/05/2013   0
20/05/2013   0
20/05/2013   108.805
23/05/2013   109.797
28/05/2013   110.895

o resultado é esse :

inicial          final        result    limitekm     placa         condutor.
0             111408    111408   0         GZQ2703   Vinicius.

percebam que não pegou o KM INICIAL

alguem pode me dar uma Luz ?
Sc - 6.xxx , 7.xxx e V8
Windows Server 2008 Enterpriser 64 bits
SqlServer 2008 Express 64 bits
Sistema Integrado de Gestão de Construtoras]WaveTOR - Sistema Integrado de Gestão de Construtoras
Teófilo Otoni - MG
(33)8824-2775

Jean Matos

  • Expert
  • *****
  • Mensagens: 956
    • Gestão de Construtoras
    • Email
Re:Ajuda em um select
« Responder #1 Online: Junho 27, 2013, 09:38:28 am »
Prezados, estou fazendo um select que está me fritando a cuca.. o foda é que é muito simples.

Código: [Selecionar]
SELECT     MIN(dbo.abastecimentos.km) AS inicial, MAX(dbo.abastecimentos.km) AS final, MAX(dbo.abastecimentos.km) - MIN(dbo.abastecimentos.km) AS result,
                      dbo.veiculos.limitekm, dbo.veiculos.placa, dbo.veiculos.condutor
FROM         dbo.abastecimentos INNER JOIN
                      dbo.veiculos ON dbo.abastecimentos.placa = dbo.veiculos.idveiculo
WHERE     (dbo.abastecimentos.data BETWEEN CONVERT(DATETIME, '[inicial]', 102) AND CONVERT(DATETIME, '[final]', 102))
GROUP BY dbo.veiculos.placa, dbo.veiculos.limitekm, dbo.veiculos.condutor

se as informações no banco de dados está desta forma :

491   06/05/2013   321.809
509   13/05/2013   322.810
512   15/05/2013   323.401
520   20/05/2013   323.806
527   22/05/2013   324.500
527   22/05/2013   324.500
541   27/05/2013   325.002

o resultado é o seguinte :

inicial          final        result    limitekm     placa         condutor.
321809   325002   3193   0          GML2849   Edson Coimbra Laube

até qui tá certo..


no entanto se as informações estão um pouco fora de ordem:

09/05/2013   106.083
31/05/2013   111.408
02/05/2013   104.690
22/05/2013   109.410
15/05/2013   107.659
17/05/2013   108.463
24/05/2013   110.042
06/05/2013   105.240
27/05/2013   110.365
13/05/2013   107.116
20/05/2013   0
20/05/2013   0
20/05/2013   108.805
23/05/2013   109.797
28/05/2013   110.895

o resultado é esse :

inicial          final        result    limitekm     placa         condutor.
0             111408    111408   0         GZQ2703   Vinicius.

percebam que não pegou o KM INICIAL

alguem pode me dar uma Luz ?

Prezados, percebi que o erro está no valor ZERO(rs) óbvio.. que mancada..
mas...
agora não estou conseguindo filtras o MIN().. quando o valor é maior que zero....
Sc - 6.xxx , 7.xxx e V8
Windows Server 2008 Enterpriser 64 bits
SqlServer 2008 Express 64 bits
Sistema Integrado de Gestão de Construtoras]WaveTOR - Sistema Integrado de Gestão de Construtoras
Teófilo Otoni - MG
(33)8824-2775

Haroldo

  • Expert
  • *****
  • Mensagens: 6293
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:Ajuda em um select
« Responder #2 Online: Junho 27, 2013, 10:45:39 am »
Faca sub selects para min e max, coloque tudo numa view e faca um select simples na view ordenando pela data