Fórum Duvida de Select #131459

31/03/2010

0

        fiz o seguinte select
        
       
       
        SELECT
              GS_ORCAMENTOS.ORC_NUM,  
          (
             SELECT
                MIN(ORCAGE_DATA)
             FROM
                GS_ORCAMENTOS_AGENDA
             WHERE
                SYS_DEL=0 AND ASS_ID=100 AND ORC_ID=GS_ORCAMENTOS.ORC_ID
          ) DATAINICIAL,
          (
             SELECT
                MAX(ORCAGE_DATA)
             FROM
                GS_ORCAMENTOS_AGENDA
             WHERE
                SYS_DEL=0 AND ASS_ID=100 AND ORC_ID=GS_ORCAMENTOS.ORC_ID
               
          ) DATAFINAL
         
        FROM
          GS_ORCAMENTOS
          LEFT JOIN GS_TABELAS_PRECOS
            ON (GS_TABELAS_PRECOS.TABPRC_ID = GS_ORCAMENTOS.ORC_TABPRE)
          LEFT JOIN GS_CLIENTES_FORNECEDORES
            ON (GS_CLIENTES_FORNECEDORES.CLIFOR_ID = GS_ORCAMENTOS.CLIFOR_ID
               AND GS_CLIENTES_FORNECEDORES.ASS_ID=GS_ORCAMENTOS.ASS_ID)
          LEFT JOIN GS_EVENTOS
            ON (GS_EVENTOS.ORC_ID = GS_ORCAMENTOS.ORC_ID
               AND GS_EVENTOS.SYS_DEL = 0 AND GS_EVENTOS.ASS_ID=100)                             
          LEFT JOIN GS_FUNCIONARIOS
            ON (GS_FUNCIONARIOS.FUN_ID = GS_ORCAMENTOS.FUN_ID
               AND GS_FUNCIONARIOS.ASS_ID=GS_ORCAMENTOS.ASS_ID)
           
          LEFT JOIN GS_ORCAMENTOS_EQUIPAMENTOS
            ON (GS_ORCAMENTOS_EQUIPAMENTOS.ORC_ID = GS_ORCAMENTOS.ORC_ID
               AND GS_FUNCIONARIOS.ASS_ID=GS_ORCAMENTOS.ASS_ID)
           
          LEFT JOIN GS_EQUIPAMENTOS_APRESENTACAO
            ON (GS_EQUIPAMENTOS_APRESENTACAO.EPTAPR_ID = GS_ORCAMENTOS_EQUIPAMENTOS.EQT_ID
              AND GS_EQUIPAMENTOS_APRESENTACAO.ASS_ID=GS_ORCAMENTOS.ASS_ID)
           
                                     
        WHERE
            GS_ORCAMENTOS.SYS_DEL = 0
        AND
            ((GS_ORCAMENTOS.ORC_NUM=1454) or (GS_ORCAMENTOS.ORC_NUM=900))
           
        --d DATAFINAL  BETWEEN '02/28/2010 00:00'   AND '03/31/2010 23:59'
           
           
        AND
                GS_ORCAMENTOS.ASS_ID = 100
               
                que trara o seguinte resultado
               
ORC_NUM    DATAINICIAL            DATAFINAL
900    2008-09-30 00:00:00.000    2008-10-06 00:00:00.000
900    2008-09-30 00:00:00.000    2008-10-06 00:00:00.000
900    2008-09-30 00:00:00.000    2008-10-06 00:00:00.000
900    2008-09-30 00:00:00.000    2008-10-06 00:00:00.000
900    2008-09-30 00:00:00.000    2008-10-06 00:00:00.000
900    2008-09-30 00:00:00.000    2008-10-06 00:00:00.000
1454    2010-03-08 00:00:00.000    2010-03-15 00:00:00.000
1454    2010-03-08 00:00:00.000    2010-03-15 00:00:00.000
1454    2010-03-08 00:00:00.000    2010-03-15 00:00:00.000
               
                minha duvida é o seguinte:
                Como eu posso filtrar por data gostaria de trazer pelo campo DataFinal apenas os registros 2010-03-15 por exemplo
                como eu faço isso aproveitando meu select.
               
                Obs. estou usando SQL SERVER
               
                no aguardo
               
                EVandro
Evandro Abreu

Evandro Abreu

Responder

Posts

31/03/2010

Emerson Nascimento

veja se pode ser assim:

SELECT
  GS_ORCAMENTOS.ORC_NUM,
  MIN(GS_ORCAMENTOS_AGENDA.ORCAGE_DATA) DATAINICIAL,
  MAX(GS_ORCAMENTOS_AGENDA.ORCAGE_DATA) DATAFINAL
FROM
  GS_ORCAMENTOS
LEFT JOIN GS_TABELAS_PRECOS
  ON (GS_TABELAS_PRECOS.TABPRC_ID = GS_ORCAMENTOS.ORC_TABPRE)
LEFT JOIN GS_CLIENTES_FORNECEDORES
  ON (GS_CLIENTES_FORNECEDORES.CLIFOR_ID = GS_ORCAMENTOS.CLIFOR_ID
  AND GS_CLIENTES_FORNECEDORES.ASS_ID=GS_ORCAMENTOS.ASS_ID)
LEFT JOIN GS_EVENTOS
  ON (GS_EVENTOS.ORC_ID = GS_ORCAMENTOS.ORC_ID
  AND GS_EVENTOS.SYS_DEL = 0 AND GS_EVENTOS.ASS_ID=100)                            
LEFT JOIN GS_FUNCIONARIOS
  ON (GS_FUNCIONARIOS.FUN_ID = GS_ORCAMENTOS.FUN_ID
  AND GS_FUNCIONARIOS.ASS_ID=GS_ORCAMENTOS.ASS_ID)
LEFT JOIN GS_ORCAMENTOS_EQUIPAMENTOS
  ON (GS_ORCAMENTOS_EQUIPAMENTOS.ORC_ID = GS_ORCAMENTOS.ORC_ID
  AND GS_FUNCIONARIOS.ASS_ID=GS_ORCAMENTOS.ASS_ID)
LEFT JOIN GS_EQUIPAMENTOS_APRESENTACAO
  ON (GS_EQUIPAMENTOS_APRESENTACAO.EPTAPR_ID = GS_ORCAMENTOS_EQUIPAMENTOS.EQT_ID
  AND GS_EQUIPAMENTOS_APRESENTACAO.ASS_ID=GS_ORCAMENTOS.ASS_ID)
LEFT JOIN GS_ORCAMENTOS_AGENDA
  ON GS_ORCAMENTOS_AGENDA.ASS_ID=GS_ORCAMENTOS.ASS_ID
  AND GS_ORCAMENTOS_AGENDA.ORC_ID=GS_ORCAMENTOS.ORC_ID
WHERE
  GS_ORCAMENTOS.SYS_DEL = 0
  AND ((GS_ORCAMENTOS.ORC_NUM=1454) or (GS_ORCAMENTOS.ORC_NUM=900))
  AND GS_ORCAMENTOS.ASS_ID = 100
GROUP BY
  GS_ORCAMENTOS.ORC_NUM
HAVING
  MAX(GS_ORCAMENTOS_AGENDA.ORCAGE_DATA) BETWEEN '02/28/2010' AND '03/31/2010 23:59'

Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar