Jairovisk 0 Denunciar post Postado Agosto 12, 2011 Bom dia, montei um select para pesquisar quais funções estão relacionadas a cada permissão, mas, o resultado não esta trazendo apenas um sistema, e também esta gerando duplicidade nas informações. Alguém pode me auxiliar. Tenho de montar uma planilha em excel para apresentar ao gestores de cada área, como estõpa relacionados os usuários a cada permissão, e como estão relacionadas cada função e esta permissão. Exemplo: Select A.Cd_Sistema Cod_Sistema, A.Ds_Sistema Nome_Sistema, B.Cd_Funcao Cod_Função, B.Ds_Funcao Descrição_Da_Função, C.Id_Permissao Permissao_C, D.Id_Permissao Permissao_D/*, E.Id_Permissao Permissao_E, F.id_permissao Permissao_F*/ From Tgesist A, Tgefuncao B, Tcapermissao C, Tcapermissao D/*, Tcapermissao E, Tcapermissao F*/ Where A.Cd_Sistema = B.Cd_Sistema And A.Cd_Sistema = C.Cd_Sistema And A.Cd_Sistema = D.Cd_Sistema And C.Id_Permissao = 1 Or D.Id_Permissao = 2 /* Or E.Id_Permissao = 3 Or f.id_permissao = 4*/ And A.Cd_Sistema = 'ACL' Order By A.Cd_Sistema, B.Ds_Funcao; Deveria retornar na coluna PERMISSAO_C o número "1" para todas as funções a C.ID_PERMISSAO = 1, quando não existir retornar nulo; e assim por diante. ACL ACOMPANHAMENTO DE LIMITES ACLI CLIENTE 1 1 ACL ACOMPANHAMENTO DE LIMITES ACBO LIMITE -> BOVESPA 1 1 ACL ACOMPANHAMENTO DE LIMITES ACCC LIMITE -> BOVESPA -> CADASTRO 1 1 ACL ACOMPANHAMENTO DE LIMITES ACNA LIMITE -> BOVESPA -> CONSULTA 1 1 ACL ACOMPANHAMENTO DE LIMITES ACGA LIMITE -> BOVESPA -> GRAFICO 1 1 ACL ACOMPANHAMENTO DE LIMITES ACLE MENU ACOMPANHAMENTO DE LIMITES 1 1 ACL ACOMPANHAMENTO DE LIMITES ACAN MENU ANALISE 1 1 ACL ACOMPANHAMENTO DE LIMITES ACCA MENU CADASTROS 1 1 ACL ACOMPANHAMENTO DE LIMITES ACCR MENU LIMITE DE CREDITO 1 1 ACL ACOMPANHAMENTO DE LIMITES ACPA PARAMETROS 1 1 BMF BMF ABEMO ACERTO BASE EMOLUMENTO 1 1 BMF BMF ABEMO ACERTO BASE EMOLUMENTO 1 2 BMF BMF ABEML ACERTO BASE EMOLUMENTO LIQ. 1 2 BMF BMF ABEML ACERTO BASE EMOLUMENTO LIQ. 1 1 BMF BMF ACORN ACERTO DE CORRETAGEM CLEARING-EXECUTION 1 2 BMF BMF ACORN ACERTO DE CORRETAGEM CLEARING-EXECUTION 1 1 BMF BMF ACOR ALTERAÇÃO DA CORRETAGEM 1 1 BMF BMF ACOR ALTERAÇÃO DA CORRETAGEM 1 2 BMF BMF ATOT ALTERAÇÃO TOTAL DO CLIENTE 1 2 BMF BMF ATOT ALTERAÇÃO TOTAL DO CLIENTE 1 1 BMF BMF MCLIE CADASTRO - CLIENTE 1 1 BMF BMF MCLIE CADASTRO - CLIENTE 1 2 BMF BMF MCORR CADASTRO - CORRESPONDENTE 1 2 BMF BMF MCORR CADASTRO - CORRESPONDENTE 1 1 BMF BMF MAPE CADASTRO CLIENTE APELIDO 1 2 BMF BMF MAPE CADASTRO CLIENTE APELIDO 1 1 BMF BMF MLCE CADASTRO CORRETAGEM CLEARING-EXECUTION 1 1 BMF BMF MLCE CADASTRO CORRETAGEM CLEARING-EXECUTION 1 2 BMF BMF MTXCOT CADASTRO COTAÇÕES 1 2 BMF BMF MTXCOT CADASTRO COTAÇÕES 1 1 BMF BMF CACS CADASTRO DE ACERTO CORRETAGEM POR SERIE 1 2 BMF BMF CACS CADASTRO DE ACERTO CORRETAGEM POR SERIE 1 1 BMF BMF CAAG CADASTRO DE AGENTES 1 2 BMF BMF CAAG CADASTRO DE AGENTES 1 1 Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Agosto 12, 2011 Creio que falte um outer join ( (+) ), tente : Select A.Cd_Sistema Cod_Sistema, A.Ds_Sistema Nome_Sistema, B.Cd_Funcao Cod_Função, B.Ds_Funcao Descrição_Da_Função, C.Id_Permissao Permissao_C, D.Id_Permissao Permissao_D From Tgesist A, Tgefuncao B, Tcapermissao C, Tcapermissao D/*, Tcapermissao E, Tcapermissao F*/ Where A.Cd_Sistema = B.Cd_Sistema And A.Cd_Sistema = C.Cd_Sistema (+) And A.Cd_Sistema = D.Cd_Sistema (+) And (nvl(C.Id_Permissao,1) = 1 Or nvl(D.Id_Permissao,2) = 2) And A.Cd_Sistema = 'ACL' Order By A.Cd_Sistema, B.Ds_Funcao; Esta linha .. And (nvl(C.Id_Permissao,1) = 1 Or nvl(D.Id_Permissao,2) = 2) ... talvez deva ter outro tratamento. Compartilhar este post Link para o post Compartilhar em outros sites
Jairovisk 0 Denunciar post Postado Agosto 12, 2011 Motta; grato pelo retorno; agora só falta determinar que na coluna C.Id_Permissao apresente apenas a permissão = 1, e na D.Id_Permissao apenas a permissão 2; caso contrário retorne como nulo. É possível? Caso precise te passo a descrição das colunas das tabelas. este é parte do resultado que retornou. COD_SISTEMA NOME_SISTEMA COD_FUNÇÃO DESCRIÇÃO_DA_FUNÇÃO PERMISSAO_C PERMISSAO_D CTB Contabilidade ACCO ALTERAÇAO ATIVIDADE DE CONTA CORRENTE 1 2 CTB Contabilidade ACCO ALTERAÇAO ATIVIDADE DE CONTA CORRENTE 1 3 CTB Contabilidade ACCO ALTERAÇAO ATIVIDADE DE CONTA CORRENTE 2 2 CTB Contabilidade ACCO ALTERAÇAO ATIVIDADE DE CONTA CORRENTE 3 2 CTB Contabilidade ACCO ALTERAÇAO ATIVIDADE DE CONTA CORRENTE 1 1 CTB Contabilidade ARCO ATUALIZAÇÃO DE RELACIONAMENTO CONEF 1 2 CTB Contabilidade ARCO ATUALIZAÇÃO DE RELACIONAMENTO CONEF 1 3 CTB Contabilidade ARCO ATUALIZAÇÃO DE RELACIONAMENTO CONEF 2 2 CTB Contabilidade ARCO ATUALIZAÇÃO DE RELACIONAMENTO CONEF 3 2 CTB Contabilidade ARCO ATUALIZAÇÃO DE RELACIONAMENTO CONEF 1 1 CTB Contabilidade EBDE BALANÇO - DESFAZER 1 2 CTB Contabilidade EBDE BALANÇO - DESFAZER 1 3 CTB Contabilidade EBDE BALANÇO - DESFAZER 2 2 CTB Contabilidade EBDE BALANÇO - DESFAZER 3 2 CTB Contabilidade EBDE BALANÇO - DESFAZER 1 1 CTB Contabilidade EBEN BALANÇO - ENCERRAMENTO 1 2 CTB Contabilidade EBEN BALANÇO - ENCERRAMENTO 1 3 CTB Contabilidade EBEN BALANÇO - ENCERRAMENTO 2 2 CTB Contabilidade EBEN BALANÇO - ENCERRAMENTO 3 2 CTB Contabilidade EBEN BALANÇO - ENCERRAMENTO 1 1 CTB Contabilidade CCON CONSOLIDAÇÃO 3 2 CTB Contabilidade CCON CONSOLIDAÇÃO 2 2 CTB Contabilidade CCON CONSOLIDAÇÃO 1 3 CTB Contabilidade CCON CONSOLIDAÇÃO 1 2 CTB Contabilidade CCON CONSOLIDAÇÃO 1 1 CTB Contabilidade MCON CONSOLIDADO 3 2 CTB Contabilidade MCON CONSOLIDADO 2 2 CTB Contabilidade MCON CONSOLIDADO 1 3 CTB Contabilidade MCON CONSOLIDADO 1 2 CTB Contabilidade MCON CONSOLIDADO 1 1 CTB Contabilidade CVCO CONSOLIDADO - CONTAS 1 1 CTB Contabilidade CVCO CONSOLIDADO - CONTAS 3 2 CTB Contabilidade CVCO CONSOLIDADO - CONTAS 2 2 CTB Contabilidade CVCO CONSOLIDADO - CONTAS 1 2 CTB Contabilidade CVCO CONSOLIDADO - CONTAS 1 3 CTB Contabilidade CVEM CONSOLIDADO - EMPRESAS 3 2 Exemplo: COD_SISTEMA NOME_SISTEMA COD_FUNÇÃO DESCRIÇÃO_DA_FUNÇÃO PERMISSAO_C PERMISSAO_D CTB Contabilidade ACCO ALTERAÇAO ATIVIDADE DE CONTA CORRENTE 1 2 CTB Contabilidade ACCO ALTERAÇAO ATIVIDADE DE CONTA CORRENTE 1 null CTB Contabilidade ACCO ALTERAÇAO ATIVIDADE DE CONTA CORRENTE 1 null CTB Contabilidade ARCO ATUALIZAÇÃO DE RELACIONAMENTO CONEF 1 2 CTB Contabilidade ARCO ATUALIZAÇÃO DE RELACIONAMENTO CONEF 1 null CTB Contabilidade ARCO ATUALIZAÇÃO DE RELACIONAMENTO CONEF 1 null CTB Contabilidade EBDE BALANÇO - DESFAZER 1 2 CTB Contabilidade EBDE BALANÇO - DESFAZER 1 null CTB Contabilidade EBDE BALANÇO - DESFAZER 1 null CTB Contabilidade EBEN BALANÇO - ENCERRAMENTO 1 2 CTB Contabilidade EBEN BALANÇO - ENCERRAMENTO 1 null CTB Contabilidade EBEN BALANÇO - ENCERRAMENTO 1 null CTB Contabilidade CCON CONSOLIDAÇÃO 1 null CTB Contabilidade CCON CONSOLIDAÇÃO 1 2 CTB Contabilidade CCON CONSOLIDAÇÃO 1 null CTB Contabilidade MCON CONSOLIDADO 1 null CTB Contabilidade MCON CONSOLIDADO 1 2 CTB Contabilidade MCON CONSOLIDADO 1 null CTB Contabilidade CVCO CONSOLIDADO - CONTAS 1 null CTB Contabilidade CVCO CONSOLIDADO - CONTAS 1 2 CTB Contabilidade CVCO CONSOLIDADO - CONTAS 1 null CTB Contabilidade CVEM CONSOLIDADO - EMPRESAS 1 null CTB Contabilidade CVEM CONSOLIDADO - EMPRESAS 1 2 CTB Contabilidade CVEM CONSOLIDADO - EMPRESAS 1 null CTB Contabilidade CVAL CONSOLIDADO - VALIDAÇÕES 1 2 CTB Contabilidade CVAL CONSOLIDADO - VALIDAÇÕES 1 null CTB Contabilidade CVAL CONSOLIDADO - VALIDAÇÕES 1 null CTB Contabilidade CCCO CONSULTA ATIVIDADE DE CONTA CORRENTE 1 2 CTB Contabilidade CCCO CONSULTA ATIVIDADE DE CONTA CORRENTE 1 null CTB Contabilidade CCCO CONSULTA ATIVIDADE DE CONTA CORRENTE 1 null CTB Contabilidade CELI ELIMINAÇÃO 1 2 CTB Contabilidade CELI ELIMINAÇÃO 1 null CTB Contabilidade CELI ELIMINAÇÃO 1 null CTB Contabilidade MENC ENCERRAMENTO 1 2 Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Agosto 12, 2011 Como eu disse troque ... And (nvl(C.Id_Permissao,1) = 1 Or nvl(D.Id_Permissao,2) = 2) ... por ... And (C.Id_Permissao = 1 Or D.Id_Permissao = 2) ... Compartilhar este post Link para o post Compartilhar em outros sites
Jairovisk 0 Denunciar post Postado Agosto 12, 2011 Motta; ainda esta retornando isto: COD_SISTEMA NOME_SISTEMA COD_FUNÇÃO DESCRIÇÃO_DA_FUNÇÃO PERMISSAO_C PERMISSAO_D CTB Contabilidade ACCO ALTERAÇAO ATIVIDADE DE CONTA CORRENTE 1 1 CTB Contabilidade ACCO ALTERAÇAO ATIVIDADE DE CONTA CORRENTE 1 2 CTB Contabilidade ACCO ALTERAÇAO ATIVIDADE DE CONTA CORRENTE 1 3 CTB Contabilidade ACCO ALTERAÇAO ATIVIDADE DE CONTA CORRENTE 2 2 CTB Contabilidade ACCO ALTERAÇAO ATIVIDADE DE CONTA CORRENTE 3 2 a intenção é que retorne algo neste estilo; COD_SISTEMA NOME_SISTEMA COD_FUNÇÃO DESCRIÇÃO_DA_FUNÇÃO PERMISSAO_C PERMISSAO_D CTB Contabilidade ACCO ALTERAÇAO ATIVIDADE DE CONTA CORRENTE 1 2 CTB Contabilidade ARCO ATUALIZAÇÃO DE RELACIONAMENTO CONEF 1 2 CTB Contabilidade EBDE BALANÇO - DESFAZER 1 2 Apenas um linha com a função(COD_FUNÇÃO) e varias colunas com as permissões (PERMISSAO_C, PERMISSAO_D) e assim por diante; como existem outros sistemas com mais de 6 permissões; terei de abrir novas colunas como no select inicial que estão momentadas. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Agosto 12, 2011 Não sei se entendi bem mas talvez o CASE ajude. Select A.Cd_Sistema Cod_Sistema, A.Ds_Sistema Nome_Sistema, B.Cd_Funcao Cod_Função, B.Ds_Funcao Descrição_Da_Função, (CASE WHEN C.Id_Permissao = 1 THEN 'X' ELSE ' ' END) PERM1, (CASE WHEN C.Id_Permissao = 2 THEN 'X' ELSE ' ' END) PERM2 From Tgesist A, Tgefuncao B, Tcapermissao C Where A.Cd_Sistema = B.Cd_Sistema And A.Cd_Sistema = C.Cd_Sistema (+) And A.Cd_Sistema = 'ACL' Order By A.Cd_Sistema, B.Ds_Funcao; Compartilhar este post Link para o post Compartilhar em outros sites
Jairovisk 0 Denunciar post Postado Agosto 12, 2011 Ficou legal, só falta truncar a coluna COD_FUNÇÃO para aparecer apenas uma linha. COD_SISTEMA NOME_SISTEMA COD_FUNÇÃO DESCRIÇÃO_DA_FUNÇÃO PERM1 PERM2 PERM3 PERM4 CCO CONTAS CORRENTES CPFT ACESSO A TELA - CPMF TRIMESTRAL X CCO CONTAS CORRENTES CPFT ACESSO A TELA - CPMF TRIMESTRAL X CCO CONTAS CORRENTES CPFT ACESSO A TELA - CPMF TRIMESTRAL X CCO CONTAS CORRENTES CPFT ACESSO A TELA - CPMF TRIMESTRAL X CCO CONTAS CORRENTES GACT ACESSO A TELA - Gerar Arquivo de CPMF Trimestral X CCO CONTAS CORRENTES GACT ACESSO A TELA - Gerar Arquivo de CPMF Trimestral X CCO CONTAS CORRENTES GACT ACESSO A TELA - Gerar Arquivo de CPMF Trimestral X CCO CONTAS CORRENTES GACT ACESSO A TELA - Gerar Arquivo de CPMF Trimestral X Graças a você estou conhecendo nopvos comandos de SQL. Na minha resposta ficou desposicionado, mas na query o "X" ficam posicionados debaixo de cada coluna respectivamente. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Agosto 12, 2011 De novo não sei se é isto mas ... B.Cd_Funcao||' '||B.Ds_Funcao Descrição_Da_Função, Compartilhar este post Link para o post Compartilhar em outros sites
Jairovisk 0 Denunciar post Postado Agosto 12, 2011 Desculpe se não estou explicando direito, mas é algo assim. As funções em apenas uma linha e as permissões na sequência. COD_SISTEMA NOME_SISTEMA COD_FUNÇÃO DESCRIÇÃO_DA_FUNÇÃO PERM1 PERM2 PERM3 PERM4 CCO CONTAS CORRENTES CPFT ACESSO A TELA - CPMF TRIMESTRAL X X X CCO CONTAS CORRENTES GACT ACESSO A TELA - Gerar Arquivo de CPMF Trimestral X X X CCO CONTAS CORRENTES ACCO ALTERAÇÃO DE CLIENTE ATIV. CONTA CORR. X X X X CCO CONTAS CORRENTES AIMF ALTERAÇÃO DE IMF X X X CCO CONTAS CORRENTES AGRC ALTERAÇÃO GRUPO DE COMPENSAÇÃO X X Como posso anexar o arquivo para melhorar a sua visualização? Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Agosto 12, 2011 Te passei uma MP com meu email. -- saquei tenta : Select A.Cd_Sistema Cod_Sistema, A.Ds_Sistema Nome_Sistema, B.Cd_Funcao Cod_Função, B.Ds_Funcao Descrição_Da_Função, decode(sum(CASE WHEN C.Id_Permissao = 1 THEN 1 ELSE 0 END),0,' ','x') PERM1, decode(sum(CASE WHEN C.Id_Permissao = 2 THEN 1 ELSE 0 END),0,' ','x') PERM2 From Tgesist A, Tgefuncao B, Tcapermissao C Where A.Cd_Sistema = B.Cd_Sistema And A.Cd_Sistema = C.Cd_Sistema (+) And A.Cd_Sistema = 'ACL' group by A.Cd_Sistema Cod_Sistema, A.Ds_Sistema , B.Cd_Funcao , B.Ds_Funcao Order By A.Cd_Sistema, B.Ds_Funcao; Compartilhar este post Link para o post Compartilhar em outros sites
Jairovisk 0 Denunciar post Postado Agosto 18, 2011 Motta, bom dia; Deu trabalho, mas, consegui desta maneira. Select A.Cd_Sistema As Cod_Sistema, A.Ds_Sistema As Nome_Sistema, B.Cd_Funcao As Cod_Função, B.Nm_Funcao Nome_Função, D1.Nm_Permissao As Perm1, D2.Nm_Permissao As Perm2, D3.Nm_Permissao As Perm3, D4.Nm_Permissao As Perm4, D5.Nm_Permissao As Perm5, d6.nm_Permissao As Perm6 From Tgesist A Inner Join Tgefuncao B On A.Cd_Sistema = B.Cd_Sistema Left Join Tcaperfun C1 On B.Cd_Sistema = C1.Cd_Sistema And B.Cd_Funcao = C1.Cd_Funcao And C1.Id_Permissao = 1 And C1.Cd_Sistema is not null Left Join Tcapermissao D1 On C1.Cd_Sistema = D1.Cd_Sistema and c1.id_permissao = d1.id_permissao Left Join Tcaperfun C2 On B.Cd_Sistema = C2.Cd_Sistema And B.Cd_Funcao = C2.Cd_Funcao And C2.Id_Permissao = 2 And C2.Cd_Sistema is not null Left Join Tcapermissao D2 On C2.Cd_Sistema = D2.Cd_Sistema and c2.id_permissao = d2.id_permissao Left Join Tcaperfun C3 On B.Cd_Sistema = C3.Cd_Sistema And B.Cd_Funcao = C3.Cd_Funcao And C3.Id_Permissao = 3 And C3.Cd_Sistema is not null Left Join Tcapermissao D3 On C3.Cd_Sistema = D3.Cd_Sistema and c3.id_permissao = d3.id_permissao Left Join Tcaperfun C4 On B.Cd_Sistema = C4.Cd_Sistema And B.Cd_Funcao = C4.Cd_Funcao And C4.Id_Permissao = 4 And C4.Cd_Sistema is not null Left Join Tcapermissao D4 On C4.Cd_Sistema = D4.Cd_Sistema and c4.id_permissao = d4.id_permissao Left Join Tcaperfun C5 On B.Cd_Sistema = C5.Cd_Sistema And B.Cd_Funcao = C5.Cd_Funcao And C5.Id_Permissao = 5 And C5.Cd_Sistema is not null Left Join Tcapermissao D5 On C5.Cd_Sistema = D5.Cd_Sistema and c5.id_permissao = d5.id_permissao Left Join Tcaperfun C6 On B.Cd_Sistema = C6.Cd_Sistema And B.Cd_Funcao = C6.Cd_Funcao And C6.Id_Permissao = 6 And C6.Cd_Sistema Is Not Null Left Join Tcapermissao D6 On C6.Cd_Sistema = D6.Cd_Sistema And C6.Id_Permissao = D6.Id_Permissao Where A.Cd_Sistema Is Not Null Order By A.Cd_Sistema, B.Ds_Funcao; Mas, mesmo assim valeu pela força. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Agosto 18, 2011 Ok Compartilhar este post Link para o post Compartilhar em outros sites