Pular para o conteúdo
Visualizando 11 posts - 1 até 11 (de 11 do total)
  • Autor
    Posts
  • #92107
    Girino
    Participante

      Boa Tarde..!! 8)

      Tenho uma tabela com 460 colunas no Oracle e tenho várias colunas que não estão com dados preenchidos. 🙄

      Tem como eu fazer um select nesta tabela e ele me retornar apenas as colunas que tem valor?
      Caso contrário vou ter que percorrer a tabela inteira coluna a coluna.

      Isso é possível?? 💡

      Muito Obrigado..!!

      Renato 😀

      #92110
      Ishii
      Participante

        Olá,

        Não entendi direito… se a tabela XPTO tem as colunas A1,A2,A3,B1,B2,B3, etc. você queria que o result set da query retornasse:
        A1,B2 pois tem dados nessas colunas na linha 1
        C2,F4,B3 pois tem dados nessas colunas na linha 2

        É isso mesmo? Se for isso como ficaria o select ?

        select (if A1 is not null then show A1), etc from XPTO…?????

        Ou como ficaria as colunas? Sem formatação definida?

        Brincadeiras a parte… o Structured Query Language ou SQL ou traduzindo, Linguagem de Consulta Estruturada parte do princípio que há uma estrutura para a consulta e pelo que você está pedindo (se é isso mesmo que eu entendi) não há exatamente uma estrutura e sim uma série de “condições” para a estrutura quando essas condições deveria ser para o resultado da Consulta…

        Mas se não for isso, por favor esclareça um pouco mais.

        🙂 Ishii

        #92112
        Girino
        Participante

          Eu queria uma query que me retornasse apenas os colunas que tivessem algum valor, pois são muitas e tem várias que estão sem dados.

          Quero somente as colunas que tem dados.

          EX:

          Tabela: TESTE com as colunas A1,A2,A3,B1,B2,B3

          As colunas A3 e B2 não tem dados, logo o meu select retornaria:

          SELECT *FROM TESTE
          A1,A2,B1,B3

          Espero que tenha conseguido explicar..!! 😀

          Renato 8)

          #92113
          Ishii
          Participante

            Olá,

            Acho eu é que não fui claro então… 😛

            Na Linguagem SQL (Seja ela de qualquer RDBMS) isso não é possível….

            []s Ishii

            #92115
            Girino
            Participante

              OK..!! 8)

              Obrigado..!!

              Renato

              #92116
              hudsona
              Participante

                E eu que reclamo da modelagem feita no sistema da minha empresa…..

                #92117
                Avatar photoLeonardo Litz
                Participante

                  Girino, execute o seguinte script abaixo:

                  declare

                  v_select dbms_sql.Varchar2_Table;
                  v_table varchar2(30) := '&table;
                  c number := 0;
                  begin

                  dbms_output.put_line(' select ');

                  for dd in (select C.*
                  from user_tab_cols c
                  where c.table_name = v_table) loop

                  c := c + 1;

                  v_select(c) := '||case when '||dd.column_name||' is not null then '','||dd.column_name||''' else null end';

                  end loop;

                  for dd in 1..c loop

                  if(dd = 1)then
                  dbms_output.put_line(substr(v_select(dd),3));
                  else
                  dbms_output.put_line(v_select(dd));
                  end if;

                  end loop;

                  dbms_output.put_line(' from '||v_table);

                  end;

                  Irá montar uma query da forma que você exemplificou, pegue esta query e execute, que retornará o dados da forma que vc necessita!

                  Como vc tem 460 colunas, vc vai ter que extender bastante o buffer de saida do dbms_output.

                  Grato Leonardo Litz

                  #92120
                  Girino
                  Participante

                    Olá Lits..!! 8)

                    No Select que gerou eu dei um distinct e retornou 9 linhas contendo array de string um pouco diferente para cada uma delas.

                    Nâo teria que retornar apenas uma linha?

                    Posso pegar o maior resultado do array 💡

                    1 ,PRECIFICESTRANGEIRA,CODPROD,DESCRICAO,EMBALAGEM,UNIDADE,PESOLIQ,CODEPTO,CODSEC,QTUNIT,CODFORNEC,DTCADASTRO,VOLUME,CODAUXILIAR,QTUNITCX,REVENDA,CODPRODPRINC,OBS2,UNIDADEMASTER,LARGURAM3,ALTURAM3,COMPRIMENTOM3,PRECOFIXO,PISCOFINSRETIDO,PERCCOMMOT,COMISSAOFIXA,USACLASSIFICACAO,IMUNETRIB,PESOVARIAVEL,COMPRACONSIGNADO,CONFERENOCHECKOUT,PERCPERDAKG,APROVEITACREDICMS,APROVEITACREDPISCOFINS,VLICMSANTECIPADO,VERSANALISE,CONTLOGANALISE,CONSIDERARICMSANTECIPCUSTO,CALCCREDIPI,ENVIARFORCAVENDAS,UTILIZAPRECOMAXCONSUMIDOR,DESTAQUEFICHATECNICA,EX_DOSEAMENTO,EX_IMPUREZA,PESOLIQMASTER,PCKROTATIVO,PRAZOEXPURGO,FRACIONADO,CODNESTLETERCEIROS,CONFAZ,USACROSS,USAWMS,UTILIZARVASILHAME,NUMSEQATU,TIPOEMBALAGE,TIPOCARGA,ESPECIFICOATIVIDADEPR,TIPOCOMISSAO,RESTRICAOTRANSP,VALIDARLOTE,ISENTOREGMS,ESTOQUEPORLOTE,CODAUXILIAR2,PASSELIVRE,MULTIPLO,TIPOCALCST,AUTORIZATIPO4,LARGURAARM,COMPRIMENTOARM,ALTURAARM,TIPOARM,EMBALAGEMMASTER,USAALIQCREDICMSDIFER,PSICOTROPICO,MEDICAMENTOHOSPITALAR,SOMENTETV3,FRACAOSEPARACAO,TIPORESTRICAOMED,FRETEESPECIAL,PESOBRUTOMASTER
                    2 ,PRECIFICESTRANGEIRA,CODPROD,DESCRICAO,EMBALAGEM,UNIDADE,PESOLIQ,CODEPTO,CODSEC,QTUNIT,CODFORNEC,DTCADASTRO,VOLUME,CODAUXILIAR,QTUNITCX,REVENDA,CODPRODPRINC,OBS2,UNIDADEMASTER,LARGURAM3,ALTURAM3,COMPRIMENTOM3,PRECOFIXO,PISCOFINSRETIDO,PERCCOMMOT,COMISSAOFIXA,USACLASSIFICACAO,IMUNETRIB,PESOVARIAVEL,COMPRACONSIGNADO,CONFERENOCHECKOUT,PERCPERDAKG,APROVEITACREDICMS,APROVEITACREDPISCOFINS,VLICMSANTECIPADO,VERSANALISE,CONTLOGANALISE,CONSIDERARICMSANTECIPCUSTO,CALCCREDIPI,ENVIARFORCAVENDAS,UTILIZAPRECOMAXCONSUMIDOR,DESTAQUEFICHATECNICA,EX_DOSEAMENTO,EX_IMPUREZA,PESOLIQMASTER,PCKROTATIVO,PRAZOEXPURGO,FRACIONADO,CODNESTLETERCEIROS,CONFAZ,USACROSS,USAWMS,UTILIZARVASILHAME,NUMSEQATU,TIPOEMBALAGE,TIPOCARGA,ESPECIFICOATIVIDADEPR,TIPOCOMISSAO,RESTRICAOTRANSP,VALIDARLOTE,ISENTOREGMS,CODAUXILIAR2,PASSELIVRE,MULTIPLO,TIPOCALCST,AUTORIZATIPO4,LARGURAARM,COMPRIMENTOARM,ALTURAARM,TIPOARM,EMBALAGEMMASTER,USAALIQCREDICMSDIFER,PSICOTROPICO,MEDICAMENTOHOSPITALAR,SOMENTETV3,FRACAOSEPARACAO,TIPORESTRICAOMED,FRETEESPECIAL,PESOBRUTOMASTER
                    3 ,PRECIFICESTRANGEIRA,CODPROD,DESCRICAO,EMBALAGEM,UNIDADE,PESOLIQ,PESOBRUTO,CODEPTO,CODSEC,QTUNIT,CODFORNEC,DTCADASTRO,VOLUME,CODAUXILIAR,QTUNITCX,REVENDA,CODPRODPRINC,OBS2,UNIDADEMASTER,LARGURAM3,ALTURAM3,COMPRIMENTOM3,CODFAB,PRECOFIXO,PISCOFINSRETIDO,PERCCOMMOT,COMISSAOFIXA,USACLASSIFICACAO,IMUNETRIB,PESOVARIAVEL,COMPRACONSIGNADO,CONFERENOCHECKOUT,PERCPERDAKG,APROVEITACREDICMS,APROVEITACREDPISCOFINS,VLICMSANTECIPADO,VERSANALISE,CONTLOGANALISE,CONSIDERARICMSANTECIPCUSTO,CALCCREDIPI,ENVIARFORCAVENDAS,UTILIZAPRECOMAXCONSUMIDOR,DESTAQUEFICHATECNICA,EX_DOSEAMENTO,EX_IMPUREZA,PESOLIQMASTER,PCKROTATIVO,PRAZOEXPURGO,FRACIONADO,CODNESTLETERCEIROS,CONFAZ,USACROSS,USAWMS,UTILIZARVASILHAME,NUMSEQATU,TIPOEMBALAGE,TIPOCARGA,ESPECIFICOATIVIDADEPR,TIPOCOMISSAO,RESTRICAOTRANSP,VALIDARLOTE,ISENTOREGMS,ESTOQUEPORLOTE,CODAUXILIAR2,PASSELIVRE,MULTIPLO,TIPOCALCST,AUTORIZATIPO4,LARGURAARM,COMPRIMENTOARM,ALTURAARM,VOLUMEARM,TIPOARM,EMBALAGEMMASTER,USAALIQCREDICMSDIFER,PSICOTROPICO,MEDICAMENTOHOSPITALAR,SOMENTETV3,FRACAOSEPARACAO,VOLUMEREC,TIPORESTRICAOMED,FRETEESPECIAL,PESOBRUTOMASTER
                    4 ,PRECIFICESTRANGEIRA,CODPROD,DESCRICAO,EMBALAGEM,UNIDADE,PESOLIQ,PESOBRUTO,CODEPTO,CODSEC,QTUNIT,CODFORNEC,DTCADASTRO,VOLUME,CODAUXILIAR,QTUNITCX,REVENDA,CODPRODPRINC,OBS2,UNIDADEMASTER,LARGURAM3,ALTURAM3,COMPRIMENTOM3,PRECOFIXO,PISCOFINSRETIDO,PERCCOMMOT,COMISSAOFIXA,USACLASSIFICACAO,IMUNETRIB,PESOVARIAVEL,COMPRACONSIGNADO,CONFERENOCHECKOUT,PERCPERDAKG,APROVEITACREDICMS,APROVEITACREDPISCOFINS,VLICMSANTECIPADO,VERSANALISE,CONTLOGANALISE,CONSIDERARICMSANTECIPCUSTO,CALCCREDIPI,ENVIARFORCAVENDAS,UTILIZAPRECOMAXCONSUMIDOR,DESTAQUEFICHATECNICA,EX_DOSEAMENTO,EX_IMPUREZA,PESOLIQMASTER,PCKROTATIVO,PRAZOEXPURGO,FRACIONADO,CODNESTLETERCEIROS,CONFAZ,USACROSS,USAWMS,UTILIZARVASILHAME,NUMSEQATU,TIPOEMBALAGE,TIPOCARGA,ESPECIFICOATIVIDADEPR,TIPOCOMISSAO,RESTRICAOTRANSP,VALIDARLOTE,ISENTOREGMS,CODAUXILIAR2,PASSELIVRE,MULTIPLO,TIPOCALCST,AUTORIZATIPO4,LARGURAARM,COMPRIMENTOARM,ALTURAARM,TIPOARM,EMBALAGEMMASTER,USAALIQCREDICMSDIFER,PSICOTROPICO,MEDICAMENTOHOSPITALAR,SOMENTETV3,FRACAOSEPARACAO,TIPORESTRICAOMED,FRETEESPECIAL,PESOBRUTOMASTER
                    5 ,PRECIFICESTRANGEIRA,CODPROD,DESCRICAO,EMBALAGEM,UNIDADE,PESOLIQ,CODEPTO,CODSEC,QTUNIT,CODFORNEC,DTCADASTRO,VOLUME,CODAUXILIAR,QTUNITCX,REVENDA,CODPRODPRINC,OBS2,UNIDADEMASTER,LARGURAM3,ALTURAM3,COMPRIMENTOM3,CODFAB,PRECOFIXO,PISCOFINSRETIDO,PERCCOMMOT,COMISSAOFIXA,USACLASSIFICACAO,IMUNETRIB,PESOVARIAVEL,COMPRACONSIGNADO,CONFERENOCHECKOUT,PERCPERDAKG,APROVEITACREDICMS,APROVEITACREDPISCOFINS,VLICMSANTECIPADO,VERSANALISE,CONTLOGANALISE,CONSIDERARICMSANTECIPCUSTO,CALCCREDIPI,ENVIARFORCAVENDAS,UTILIZAPRECOMAXCONSUMIDOR,DESTAQUEFICHATECNICA,EX_DOSEAMENTO,EX_IMPUREZA,PESOLIQMASTER,PCKROTATIVO,PRAZOEXPURGO,FRACIONADO,CODNESTLETERCEIROS,CONFAZ,USACROSS,USAWMS,UTILIZARVASILHAME,NUMSEQATU,TIPOEMBALAGE,TIPOCARGA,ESPECIFICOATIVIDADEPR,TIPOCOMISSAO,RESTRICAOTRANSP,VALIDARLOTE,ISENTOREGMS,ESTOQUEPORLOTE,CODAUXILIAR2,PASSELIVRE,MULTIPLO,TIPOCALCST,AUTORIZATIPO4,LARGURAARM,COMPRIMENTOARM,ALTURAARM,VOLUMEARM,TIPOARM,EMBALAGEMMASTER,USAALIQCREDICMSDIFER,PSICOTROPICO,MEDICAMENTOHOSPITALAR,SOMENTETV3,FRACAOSEPARACAO,VOLUMEREC,TIPORESTRICAOMED,FRETEESPECIAL,PESOBRUTOMASTER
                    6 ,PRECIFICESTRANGEIRA,CODPROD,DESCRICAO,EMBALAGEM,UNIDADE,PESOLIQ,PESOBRUTO,CODEPTO,CODSEC,QTUNIT,CODFORNEC,DTCADASTRO,VOLUME,CODAUXILIAR,QTUNITCX,REVENDA,CODPRODPRINC,OBS2,UNIDADEMASTER,LARGURAM3,ALTURAM3,COMPRIMENTOM3,PRECOFIXO,PISCOFINSRETIDO,PERCCOMMOT,COMISSAOFIXA,USACLASSIFICACAO,IMUNETRIB,PESOVARIAVEL,COMPRACONSIGNADO,CONFERENOCHECKOUT,PERCPERDAKG,APROVEITACREDICMS,APROVEITACREDPISCOFINS,VLICMSANTECIPADO,VERSANALISE,CONTLOGANALISE,CONSIDERARICMSANTECIPCUSTO,CALCCREDIPI,ENVIARFORCAVENDAS,UTILIZAPRECOMAXCONSUMIDOR,DESTAQUEFICHATECNICA,EX_DOSEAMENTO,EX_IMPUREZA,PESOLIQMASTER,PCKROTATIVO,PRAZOEXPURGO,FRACIONADO,CODNESTLETERCEIROS,CONFAZ,USACROSS,USAWMS,UTILIZARVASILHAME,NUMSEQATU,TIPOEMBALAGE,TIPOCARGA,ESPECIFICOATIVIDADEPR,TIPOCOMISSAO,RESTRICAOTRANSP,VALIDARLOTE,ISENTOREGMS,ESTOQUEPORLOTE,CODAUXILIAR2,PASSELIVRE,MULTIPLO,TIPOCALCST,AUTORIZATIPO4,LARGURAARM,COMPRIMENTOARM,ALTURAARM,VOLUMEARM,TIPOARM,EMBALAGEMMASTER,USAALIQCREDICMSDIFER,PSICOTROPICO,MEDICAMENTOHOSPITALAR,SOMENTETV3,FRACAOSEPARACAO,VOLUMEREC,TIPORESTRICAOMED,FRETEESPECIAL,PESOBRUTOMASTER
                    7 ,PRECIFICESTRANGEIRA,CODPROD,DESCRICAO,EMBALAGEM,UNIDADE,PESOLIQ,PESOBRUTO,CODEPTO,CODSEC,QTUNIT,CODFORNEC,DTCADASTRO,VOLUME,CODAUXILIAR,QTUNITCX,REVENDA,CODPRODPRINC,OBS2,UNIDADEMASTER,LARGURAM3,ALTURAM3,COMPRIMENTOM3,PRECOFIXO,PISCOFINSRETIDO,PERCCOMMOT,COMISSAOFIXA,USACLASSIFICACAO,IMUNETRIB,PESOVARIAVEL,COMPRACONSIGNADO,CONFERENOCHECKOUT,PERCPERDAKG,APROVEITACREDICMS,APROVEITACREDPISCOFINS,VLICMSANTECIPADO,VERSANALISE,CONTLOGANALISE,CONSIDERARICMSANTECIPCUSTO,CALCCREDIPI,ENVIARFORCAVENDAS,UTILIZAPRECOMAXCONSUMIDOR,DESTAQUEFICHATECNICA,EX_DOSEAMENTO,EX_IMPUREZA,PESOLIQMASTER,PCKROTATIVO,PRAZOEXPURGO,FRACIONADO,CODNESTLETERCEIROS,CONFAZ,USACROSS,USAWMS,UTILIZARVASILHAME,NUMSEQATU,TIPOEMBALAGE,TIPOCARGA,ESPECIFICOATIVIDADEPR,TIPOCOMISSAO,RESTRICAOTRANSP,VALIDARLOTE,ISENTOREGMS,ESTOQUEPORLOTE,CODAUXILIAR2,PASSELIVRE,MULTIPLO,TIPOCALCST,AUTORIZATIPO4,LARGURAARM,COMPRIMENTOARM,ALTURAARM,TIPOARM,EMBALAGEMMASTER,USAALIQCREDICMSDIFER,PSICOTROPICO,MEDICAMENTOHOSPITALAR,SOMENTETV3,FRACAOSEPARACAO,TIPORESTRICAOMED,FRETEESPECIAL,PESOBRUTOMASTER
                    8 ,PRECIFICESTRANGEIRA,CODPROD,DESCRICAO,EMBALAGEM,UNIDADE,PESOLIQ,CODEPTO,CODSEC,QTUNIT,CODFORNEC,DTCADASTRO,VOLUME,CODAUXILIAR,QTUNITCX,REVENDA,CODPRODPRINC,OBS2,UNIDADEMASTER,LARGURAM3,ALTURAM3,COMPRIMENTOM3,PRECOFIXO,PISCOFINSRETIDO,PERCCOMMOT,COMISSAOFIXA,USACLASSIFICACAO,IMUNETRIB,PESOVARIAVEL,COMPRACONSIGNADO,CONFERENOCHECKOUT,PERCPERDAKG,APROVEITACREDICMS,APROVEITACREDPISCOFINS,VLICMSANTECIPADO,VERSANALISE,CONTLOGANALISE,CONSIDERARICMSANTECIPCUSTO,CALCCREDIPI,ENVIARFORCAVENDAS,UTILIZAPRECOMAXCONSUMIDOR,DESTAQUEFICHATECNICA,EX_DOSEAMENTO,EX_IMPUREZA,PESOLIQMASTER,PCKROTATIVO,PRAZOEXPURGO,FRACIONADO,CODNESTLETERCEIROS,CONFAZ,USACROSS,USAWMS,UTILIZARVASILHAME,NUMSEQATU,TIPOEMBALAGE,TIPOCARGA,ESPECIFICOATIVIDADEPR,TIPOCOMISSAO,RESTRICAOTRANSP,VALIDARLOTE,ISENTOREGMS,ESTOQUEPORLOTE,CODAUXILIAR2,PASSELIVRE,MULTIPLO,TIPOCALCST,AUTORIZATIPO4,LARGURAARM,COMPRIMENTOARM,ALTURAARM,VOLUMEARM,TIPOARM,EMBALAGEMMASTER,USAALIQCREDICMSDIFER,PSICOTROPICO,MEDICAMENTOHOSPITALAR,SOMENTETV3,FRACAOSEPARACAO,VOLUMEREC,TIPORESTRICAOMED,FRETEESPECIAL,PESOBRUTOMASTER
                    9 ,PRECIFICESTRANGEIRA,CODPROD,DESCRICAO,EMBALAGEM,UNIDADE,PESOLIQ,CODEPTO,CODSEC,QTUNIT,CODFORNEC,DTCADASTRO,VOLUME,CODAUXILIAR,QTUNITCX,REVENDA,CODPRODPRINC,OBS2,UNIDADEMASTER,LARGURAM3,ALTURAM3,COMPRIMENTOM3,PRECOFIXO,PISCOFINSRETIDO,PERCCOMMOT,COMISSAOFIXA,USACLASSIFICACAO,IMUNETRIB,PESOVARIAVEL,COMPRACONSIGNADO,CONFERENOCHECKOUT,PERCPERDAKG,APROVEITACREDICMS,APROVEITACREDPISCOFINS,VLICMSANTECIPADO,VERSANALISE,CONTLOGANALISE,CONSIDERARICMSANTECIPCUSTO,CALCCREDIPI,ENVIARFORCAVENDAS,UTILIZAPRECOMAXCONSUMIDOR,DESTAQUEFICHATECNICA,EX_DOSEAMENTO,EX_IMPUREZA,PESOLIQMASTER,PCKROTATIVO,PRAZOEXPURGO,FRACIONADO,CODNESTLETERCEIROS,CONFAZ,USACROSS,USAWMS,UTILIZARVASILHAME,NUMSEQATU,TIPOEMBALAGE,TIPOCARGA,ESPECIFICOATIVIDADEPR,TIPOCOMISSAO,RESTRICAOTRANSP,VALIDARLOTE,ISENTOREGMS,CODAUXILIAR2,PASSELIVRE,MULTIPLO,TIPOCALCST,AUTORIZATIPO4,LARGURAARM,COMPRIMENTOARM,ALTURAARM,VOLUMEARM,TIPOARM,EMBALAGEMMASTER,USAALIQCREDICMSDIFER,PSICOTROPICO,MEDICAMENTOHOSPITALAR,SOMENTETV3,FRACAOSEPARACAO,VOLUMEREC,TIPORESTRICAOMED,FRETEESPECIAL,PESOBRUTOMASTER

                    Muito Obrigado..!! 😀

                    Só falta isso, mas já ajudou bastante.. 💡

                    Renato 😉

                    #92121
                    Girino
                    Participante

                      Olá Lits..!! 8) 8) 8)

                      Acho que eu já sei o que aconteceu. 😀

                      Analisando, percebi que tem algumas colunas que tem dados, porém esses dados podem estar em apenas uma linha do select. 😉

                      Neste caso eu devo pegar o array que tiver a maior quantidade de colunas, pois este será o correto.

                      Abraços e muito obrigado novamente.. 😉

                      Renato 😀

                      #92123
                      fsitja
                      Participante

                        [quote=”hudsona”:319hnvr2]E eu que reclamo da modelagem feita no sistema da minha empresa…..[/quote]

                        Caramba 😯

                        Excelente exemplo de modelagem XGH (Extreme Go-Horse).

                        http://gohorseprocess.wordpress.com/ext … horse-xgh/

                        Mais bacana só se for parte de um sistema de Entity-Attribute-Value:
                        http://en.wikipedia.org/wiki/Entity-att … alue_model

                        😆

                        #92124
                        hudsona
                        Participante

                          Obrigado fsitja,

                          Agora eu entendo a maioria dos progamadores da minha Empresa,

                          mas esse é um exemplo de modelagem VXGH (Very Extreme Go-Horse).

                          O Extreme Go-Horse é que minha empresa esta tentando implementar.

                          Só que a equipe ainda esta dividida rs.

                        Visualizando 11 posts - 1 até 11 (de 11 do total)
                        • Você deve fazer login para responder a este tópico.