none
Aparecer nome das tabelas e valores das mesmas RRS feed

  • Pergunta

  • Olá estou com um select para fazer e não estou conseguindo saber como fazer, eu quero unir o nome das tabelas com esses valores do segundo select, que são os valores das mesmas tabelas. Assim ficaria Data_Hora,Bombas,KWHM,Flag,Vazao.

    USE RMR
    
    SELECT name as Area
    FROM
    	sys.sysobjects    AS Tabela (NOLOCK)
    WHERE
    	Tabela.NAME LIKE 'Bombas_%'
    ORDER BY
    	Tabela.name ASC
    
    
    SELECT Data_Hora,KWHM,FLag,Vazao FROM Bombas_U01041902

    Esse é o resultado dos selects


    Se alguém pudesse me ajudar aqui eu ficarei muito grato, ainda estou aprendendo.




    Yohrannes

    terça-feira, 24 de março de 2020 21:43

Todas as Respostas

  • Yohrannes,

    O que você esta querendo são coisas bem diferentes, o primeiro select você esta buscando o nome das tabelas existentes em seus bancos de dados através da visão de sistema sys.sysobjects.

    Já o segundo você esta buscando dados contidos, armazenados em suas tabelas, o quais são únicos e exclusivos de cada uma delas.

    O que você poderia fazer de uma forma fácil seria realizar um select para cada tabela, trazendo seus respectivos dados e uma coluna com o nome da mesma e aplicar o comando Union para estabelecer a união destes selects sendo retornados como um único.

    Veja abaixo o exemplo:

    Select 'Bombas_U01010701' As Tabela, Data_Hora, KWHM, Flag, Vazao From Bombas_U01010701
    Union
    Select 'Bombas_U01011504' As Tabela, Data_Hora, KWHM, Flag, Vazao From Bombas_U01011504
    Union
    Select 'Bombas_U01011505' As Tabela, Data_Hora, KWHM, Flag, Vazao From Bombas_U01011505
    Union
    Select 'Bombas_U01011508' As Tabela, Data_Hora, KWHM, Flag, Vazao From Bombas_U01011508
    Union
    Select 'Bombas_U01040101' As Tabela, Data_Hora, KWHM, Flag, Vazao From Bombas_U01040101
    Union
    Select 'Bombas_U01040102' As Tabela,Data_Hora, KWHM, Flag, Vazao From Bombas_U01040102
    Order By Tabela
    Go

    Não testei pode conter erros.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    terça-feira, 24 de março de 2020 21:59
  • Deleted
    quarta-feira, 25 de março de 2020 11:30
  • Olá, obrigado pela resposta. Então o que eu queria que fosse feito é exatamente o que você me mostrou, só que com uma simples diferença, gostaria que fosse tudo em um único select.

    Nessa Imagem ele me mostra todas as tabelas que eu quero, só que eu gostaria que ficasse tudo em um só select entende? sem separações. Talvez um union nesse comando, ou algo assim. Infelizmente não posso criar uma tabela temporária, pois a tabela ficaria enorme acredito eu, ficaria muito pesado conforme eu pedisse mais valores, pois eu irei organizar ele por Dia Depois, e selecionar o período de dias que eu quero no Report Builder.


    Yohrannes

    quarta-feira, 25 de março de 2020 16:52
  • Deleted
    quarta-feira, 25 de março de 2020 17:30
  • Olá, obrigado pela resposta. Então o que eu queria que fosse feito é exatamente o que você me mostrou, só que com uma simples diferença, gostaria que fosse tudo em um único select.

    Nessa Imagem ele me mostra todas as tabelas que eu quero, só que eu gostaria que ficasse tudo em um só select entende? sem separações. Talvez um union nesse comando, ou algo assim. Infelizmente não posso criar uma tabela temporária, pois a tabela ficaria enorme acredito eu, ficaria muito pesado conforme eu pedisse mais valores, pois eu irei organizar ele por Dia Depois, e selecionar o período de dias que eu quero no Report Builder.


    Yohrannes

    Yohrannes,

    Ao meu ver para este seu cenário, fazer acesso as tabelas de sistema talvez não seja interessante por questões de permissões, ainda mais se você deseja apresentar os dados em um relatório gerado via report builder.

    Mesmo assim, também elaborei um outro exemplo que faz uso de query dinâmica, eu ainda vejo que de uma maneira mais fácil seria você trabalhar com os Select acompanhados de Union, os quais você declara, justamente para não correr risco de existir campos com nomes iguais mas tipos de dados diferentes.

    Veja se este exemplo te ajuda:

    -- Para SQL Server 2008 ou R2 --

    -- Declarando a variável @Comando -- Declare @Comando NVarchar(Max) = '' -- Montando a Query Dinâmica -- Select @Comando += 'Select' +Table_Name+ ' As Tabela, Data_Hora, KWHM, FLag, Vazao From '+Table_Name + Char(13) + ' Union All ' + Char(13) From INFORMATION_SCHEMA.TABLES Where Table_Name Like 'Bombas_%' -- Removendo a última linha -- Set @Comando=SubString(@Comando,1,Len(@Comando)-11) -- Exibindo o conteúdo da variável @Comando -- Print @Comando -- Executundo -- Exec sp_executeSQL @Comando Go

    -- Para SQL Server 2012 ou Superior --

    -- Declarando a variável @Comando --
    Declare @Comando NVarchar(Max) = ''

    -- Montando a Query Dinâmica --
    Select @Comando +=  Concat('Select ',Table_Name, ' As Tabela, Data_Hora, KWHM, FLag, Vazao From ')+Table_Name + Char(13) + ' Union All ' + Char(13) 
                                         From INFORMATION_SCHEMA.TABLES
                                         Where Table_Name Like 'Bombas_%'

    -- Removendo a última linha --
    Set @Comando=SubString(@Comando,1,Len(@Comando)-11)

    -- Exibindo o conteúdo da variável @Comando --
    Print @Comando

    -- Executundo --
    Exec sp_executeSQL @Comando
    Go


    Estou fazendo uso da visão de sistema Information_Schema.Tables ao invês da sys.sysobjetcs para ambos os exemplos, em adicional no Exemplo 2 estou utilizando a função Concat() adicionada a partir do SQL Server 2012.

    Fiz alguns testes em meu ambiente, mas não sei se esta de acordo com o seu, valide por gentileza.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]



    quarta-feira, 25 de março de 2020 20:40