locked
Ajuda em SQL Ponto de Funcionarios RRS feed

  • Pergunta

  • eu tenho uma tabela que tem os campos

    IDLANCAMENTO, CODVEND, LAN_DATA, HORA, NOMEVEND, CODLOJA

    e quando é feito o cadastro nesta tabela ela fica assim:

     

    IDLANCAMENTO      DATA               CODVEND     CODLOJA    HORA

    158                           2012-01-18          3                    4             07:42:54
    159                           2012-01-18          10011            4             07:43:08
    160                           2012-01-18          4                    5             07:43:30
    161                           2012-01-18         15                   11           07:45:14
    162                           2012-01-18           3                   4             12:35:48
    163                           2012-01-18         15                   11           17:45:14
    164                           2012-01-18         10011              4            23:45:48

    165                           2012-01-18           3                   4             14:30:48

    166                           2012-01-18           3                   4             18:30:48

     

    fiz esta sql:

    SELECT F.codvend,F.lan_data,MIN(F.hora)as ENTRADA, MAX(F.hora) AS SAIDA,V.NOMEVEND,L.APELIDOLOJA
    FROM FARMACENTRO_PONTO F  
    INNER JOIN VENDEDORES V ON (V.CODVEND = F.codvend)
    INNER JOIN LOJAS L ON (L.CODLOJA = F.codloja)
    WHERE F.lan_data BETWEEN [$DATA1] AND [$DATA2]
    GROUP BY F.codvend,F.lan_data
    ORDER BY F.hora

    Me retorna este resultado:

    CODVEND     ENTRADA     SAIDA            NOMEVEND     APELIDOLOJA

    10011             07:43:08            23:45:48    FERNANDA       LOJA PRECOBOM

    4                     07:43:30                              LUIZ                  LOJA TABARATO

    15                   07:45:14            17:45:14    RAFAELA         LOJA PRECOBOM

    3                     07:42:54            18:30:48    CAMILA            LOJA MATRIZ

     

    o problema acontece com a CODVEND 3 se ela tiver 4 lançamentos no mesmo dia ou seja 4 periodos

    esta sql so me retorna a minima e a ultima ...alguem pode me ajudar para aparecer os 4 lançamento dela.

    tipo ENTRADA1   SAIDA1     ENTRADA2     SAIDA2

    aqueles que naum tiverem os 4 periodos ficaram em branco.

    Obrigado

    sexta-feira, 15 de fevereiro de 2013 11:41

Respostas

  • Bom dia,

    Experimente utilizar Pivot mais ou menos como segue:

    with CTE_R as
    (
        SELECT 
            F.codvend,
            F.lan_data,
            F.hora,
            V.NOMEVEND,
            L.APELIDOLOJA,
            ROW_NUMBER() OVER(PARTITION BY F.codvend, F.lan_data ORDER BY F.hora) as RowNum
        FROM FARMACENTRO_PONTO F  
        INNER JOIN VENDEDORES V ON (V.CODVEND = F.codvend)
        INNER JOIN LOJAS L ON (L.CODLOJA = F.codloja)
        WHERE F.lan_data BETWEEN [$DATA1] AND [$DATA2]
    )
    
    select
        codvend,
        lan_data,
        [1] as Entrada1,
        [2] as Saida1,
        [3] as Entrada2,
        [4] as Saida2
        NOMEVEND,
        APELIDOLOJA,
    from CTE_R 
    pivot (max(hora) for RowNum in ([1], [2], [3], [4])) as P

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    • Sugerido como Resposta Roberson Naves sexta-feira, 15 de fevereiro de 2013 12:55
    • Marcado como Resposta Ricardo Russo segunda-feira, 18 de fevereiro de 2013 12:25
    sexta-feira, 15 de fevereiro de 2013 12:54