none
Selecionar várias colunas com um nome específico RRS feed

  • Pergunta

  • Olá, estou querendo fazer este select nesta tabela, porém nela pode existir mais de uma coluna FI01_1_TOT, gostaria que se possível ele encontrasse, se existir, outras colunas que comessem com Fl, e não só uma, que nem eu fiz neste select. E fizesse o mesmo que eu estou fazendo, max - min.

    
    SELECT
    	DATEPART(HOUR, E3TimeStamp) Horas,
    	MAX(FI01_1_TOT) - MIN(FI01_1_TOT) Valor
    FROM
    	Tab_TotHora_UTR_01
    WHERE
    	CAST(E3TimeStamp as date) = '2020-04-13'
    GROUP BY
    	DATEPART(HOUR, E3TimeStamp)



    Yohrannes

    quarta-feira, 22 de abril de 2020 17:25

Respostas

  • Yohrannes,

    Na verdade isso não é impossivel de ser feito, mas tem alguns pontos, você te que montar uma query dinâmica para justamente buscar os nomes das colunas que você deseja.

    Da uma olhada se inicialmente este script te ajuda:

    -- Consultando através do relacionamento entre sys.tables e sys.columns --
    select name from sys.tables
    where object_id in (select object_id from sys.columns where name = 'codigo')
    Go
    
    -- Consultando através do relacionamento entre sys.tables e sys.syscolumns --
    select name from sys.tables
    where object_id in (select id from sys.syscolumns where name = 'codigo')
    Go


    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, 22 de abril de 2020 20:09

Todas as Respostas

  • Yohrannes,

    Vc havia criado em um outro fórum(technet), sobre o mesmo assunto.

    https://social.technet.microsoft.com/Forums/pt-BR/16a60eb3-dfbe-46d0-93ab-ab03bd777f08/selecionar-varias-colunas-com-?forum=520

    Confesso que para mim, sua pergunta está confusa. 

    Pela a sua descrição na pergunta, a tabela Tab_TotHora_UTR_01 possui varias colunas com o nome FI01_1_TOT ?!

    Vc quer que retorne todos os valores  da coluna  FI01_1_TOT que iniciam com Fl ??

    quarta-feira, 22 de abril de 2020 18:50
  • Então eu vou utilizar várias tabelas, não somente a Tab_TotHora_UTR_01 mas será em outro programa, por enquanto quero somente que retorne as colunas com o nome que comessem com FI junto com os valores delas. E nessas tabelas, podem conter além da coluna  FI01_1_TOT colunas de nome FI02_2_TOT.

    ---------Vc quer que retorne todos os valores  da coluna  FI01_1_TOT que iniciam com Fl ??

    Eu quero que retorne todos os valores das colunas que iniciam com FI, não os valores que iniciam com FI, mas sim os nomes das colunas, se existir, que iniciam com FI.

    Não quero ver os nomes das colunas, mas sim os valores, mas os valores de todas as colunas que iniciam com o nome FI.

    Obs: Nesse outro fórum eu queria além dos nomes das colunas FI, poder selecionar as tabelas com o nome especifico. Aqui eu quero somente os valores das colunas, se existir, das colunas que comessem com o nome FI.

    Tipo assim, eu sei que está errado mas é mais para compreensão lógica.

    SELECT
    	DATEPART(HOUR, E3TimeStamp) Horas,
    	 Se existir variaveis que comessem com FI%, fazer ------> MAX('FI%') - MIN('FI%') Valor    <----------- Sendo que Max FI% - O Mínimo dele mesmo.
     FROM
    	Tab_TotHora_UTR_01
    WHERE
    	CAST(E3TimeStamp as date) = '2020-04-13'
    GROUP BY
    	DATEPART(HOUR, E3TimeStamp)


    Yohrannes







    quarta-feira, 22 de abril de 2020 19:17
  • Yohrannes,

    Na verdade isso não é impossivel de ser feito, mas tem alguns pontos, você te que montar uma query dinâmica para justamente buscar os nomes das colunas que você deseja.

    Da uma olhada se inicialmente este script te ajuda:

    -- Consultando através do relacionamento entre sys.tables e sys.columns --
    select name from sys.tables
    where object_id in (select object_id from sys.columns where name = 'codigo')
    Go
    
    -- Consultando através do relacionamento entre sys.tables e sys.syscolumns --
    select name from sys.tables
    where object_id in (select id from sys.syscolumns where name = 'codigo')
    Go


    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, 22 de abril de 2020 20:09
  • Ok, Obrigado pela ajuda

    Yohrannes

    quinta-feira, 23 de abril de 2020 16:30