none
Realizar consulta em 2 tabelas conforme: (SQL 2008 R2 ) RRS feed

  • Pergunta

  • SELECT 
        DISTINCT  TB_COMBIO_HISTORICO.E3TimeStamp,
        TB_COMBIO_HISTORICO.Variavel01,
        TB_COMBIO_HISTORICO.Variavel02,
        TB_COMBIO_HISTORICO_10s.E3TimeStamp,
        TB_COMBIO_HISTORICO_10s.N1,
        TB_COMBIO_HISTORICO_10s.N2 
    FROM 
    	TB_COMBIO_HISTORICO,TB_COMBIO_HISTORICO_10s 
    WHERE 
        TB_COMBIO_HISTORICO.E3TimeStamp BETWEEN #<%spDataInicial%>#  AND  #<%spDataFinal%>#
        AND
        TB_COMBIO_HISTORICO_10s.E3TimeStamp BETWEEN #<%spDataInicial%>#  AND  #<%spDataFinal%>#
    
      AND
        TB_COMBIO_HISTORICO.E3TimeStamp  !> TB_COMBIO_HISTORICO_10s.E3TimeStamp
    
    
    ORDER BY 
           TB_COMBIO_HISTORICO_10s.E3TimeStamp  ASC



    Tenho duas tabelas em meu banco SQL 2008 R2 

    TB_COMBIO_HISTORICO.E3TimeStamp  tem valores armazenados a cada 1 segundo e o TB_COMBIO_HISTORICO_10s tem valores a cada 10 segundos

    Se eu mandar executar a query, ira me retornar mais ou menos isto:
    E3TimeStamp              |    Variavel01     | Variavel02   | E3TimeStamp                    |  N1      |   N2
    22/09/2014 16:15:33 |   95                     |   52               | 22/09/2014 16:15:32       | 50       |   29
    22/09/2014 16:15:34 |   55                     |   52               | 22/09/2014 16:15:42       | 55       |   29
    22/09/2014 16:15:35 |   87                     |   52               | 22/09/2014 16:15:52       | 52       |   29
    22/09/2014 16:15:36 |   77                     |   52               | 22/09/2014 16:15:02       | 54       |   29
    22/09/2014 16:15:37 |   54                     |   52               | 22/09/2014 16:15:12      | 52       |   29
    22/09/2014 16:15:38 |   95                     |   52               | 22/09/2014 16:15:22       | 50       |   29

    22/09/2014 16:15:39 |   95                     |   52               | 22/09/2014 16:15:32       | 21       |   29

    Mas eu precisava que ficasse da seguinte forma:
    E3TimeStamp              |    Variavel01     | Variavel02   | E3TimeStamp                    |  N1      |   N2
    22/09/2014 16:15:31 |   95                     |   52               | 22/09/2014 16:15:31       | 50       |   29
    22/09/2014 16:15:32 |   25                     |   52               | 22/09/2014 16:15:31       | 50       |   29
    22/09/2014 16:15:33 |   32                     |   52               | 22/09/2014 16:15:31      | 50       |   29
    22/09/2014 16:15:34 |   42                     |   52               | 22/09/2014 16:15:31       | 50       |   29
    22/09/2014 16:15:35 |   10                     |   52               | 22/09/2014 16:15:31      | 50       |   29
    22/09/2014 16:15:36|   11                     |   52               | 22/09/2014 16:15:31       | 50       |   29
    22/09/2014 16:15:37 |   22                     |   52               | 22/09/2014 16:15:31      | 50       |   29
    22/09/2014 16:15:38 |   42                     |   52               | 22/09/2014 16:15:31       | 50       |   29
    22/09/2014 16:15:39 |   66                     |   52               | 22/09/2014 16:15:31       | 50       |   29
    22/09/2014 16:15:40 |   02                     |   52               | 22/09/2014 16:15:31       | 21       |   33

    22/09/2014 16:15:41 |   40                     |   52               | 22/09/2014 16:15:41       | 55       |   77
    22/09/2014 16:15:42 |   40                     |   52               | 22/09/2014 16:15:41       | 52       |   77
    22/09/2014 16:15:43 |   40                     |   52               | 22/09/2014 16:15:41       | 51       |   77
    22/09/2014 16:15:44 |   40                     |   52               | 22/09/2014 16:15:41       | 80       |   77
    22/09/2014 16:15:45 |   40                     |   52               | 22/09/2014 16:15:41       | 88|   77

    E assim por diante. 

    Ou seja, a quarta coluna é a 10 segundos os valores, e eu queria que a mesma repetisse os valores para acompanhar a primeira. Igual ao exemplo. É possível? Pois não estou lembrado da forma que posso estar fazendo isto através de edição direta do SQL.


    • Editado Agnaldo JR terça-feira, 23 de setembro de 2014 12:01
    terça-feira, 23 de setembro de 2014 12:00

Respostas

  • Bom dia,

    Experimente dessa forma:

    SELECT 
        h.E3TimeStamp,
        h.Variavel01,
        h.Variavel02,
        c.E3TimeStamp,
        c.N1,
        c.N2 
    FROM TB_COMBIO_HISTORICO as h
    CROSS APPLY
    (
        SELECT TOP(1)
            h10s.E3TimeStamp,
            h10s.N1,
            h10s.N2
        FROM TB_COMBIO_HISTORICO_10s as h10s
        WHERE
            h10s.E3TimeStamp BETWEEN #<%spDataInicial%>#  AND  #<%spDataFinal%># AND
            h10s.E3TimeStamp <= h.E3TimeStamp
        ORDER BY
            h10s.E3TimeStamp
    ) as c
    WHERE 
        h.E3TimeStamp BETWEEN #<%spDataInicial%>#  AND  #<%spDataFinal%>#
    ORDER BY 
        c.E3TimeStamp

    Espero que ajude.


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

    terça-feira, 23 de setembro de 2014 13:22
  • Deleted
    terça-feira, 23 de setembro de 2014 13:41
  • Agnaldo,

    Esta quarta coluna é do tipo TimeStamp!!!! Você esta realizando alguma conversão para apresentar estes valores?

    Na query não identifiquei nada em relação a conversão.

    Agora você deseja que este valor seja fixo em relação a coluna que contém os valores de N1? E ai se mudar o valor de N1 deve-se manter o mesmo valor até a próxima mudança?

    Se for isso, já pensou em trabalhar com tabelas temporárias ou até mesmo o uso de CTE?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com


    terça-feira, 23 de setembro de 2014 17:57

Todas as Respostas

  • Bom dia,

    Experimente dessa forma:

    SELECT 
        h.E3TimeStamp,
        h.Variavel01,
        h.Variavel02,
        c.E3TimeStamp,
        c.N1,
        c.N2 
    FROM TB_COMBIO_HISTORICO as h
    CROSS APPLY
    (
        SELECT TOP(1)
            h10s.E3TimeStamp,
            h10s.N1,
            h10s.N2
        FROM TB_COMBIO_HISTORICO_10s as h10s
        WHERE
            h10s.E3TimeStamp BETWEEN #<%spDataInicial%>#  AND  #<%spDataFinal%># AND
            h10s.E3TimeStamp <= h.E3TimeStamp
        ORDER BY
            h10s.E3TimeStamp
    ) as c
    WHERE 
        h.E3TimeStamp BETWEEN #<%spDataInicial%>#  AND  #<%spDataFinal%>#
    ORDER BY 
        c.E3TimeStamp

    Espero que ajude.


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

    terça-feira, 23 de setembro de 2014 13:22
  • Deleted
    terça-feira, 23 de setembro de 2014 13:41
  • Agnaldo,

    Esta quarta coluna é do tipo TimeStamp!!!! Você esta realizando alguma conversão para apresentar estes valores?

    Na query não identifiquei nada em relação a conversão.

    Agora você deseja que este valor seja fixo em relação a coluna que contém os valores de N1? E ai se mudar o valor de N1 deve-se manter o mesmo valor até a próxima mudança?

    Se for isso, já pensou em trabalhar com tabelas temporárias ou até mesmo o uso de CTE?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com


    terça-feira, 23 de setembro de 2014 17:57