Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

  • 0
marcos antonio duarte

como usar um left join e um where na mesma query ?

Pergunta

3 respostas a esta questão

Recommended Posts

select * from tabela_A

left join tabela_b  

on tabela_b.auto = tabela_a.auto

where tabela_b.nome = 'jose carlos'

 

 

Normal cara, só que você precisa entender os conceitos do join, left, right, inner. 

 

Leia esse artigo, ira te ajudar bastante. https://imasters.com.br/artigo/240/sql-server/entendendo-joins?trace=1519021197&source=single

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por cfsardinha
      Bom dia, pessoal.
      Sou nova aqui no fórum e estou necessitando de uma grande ajuda.
      Tenho uma sentença SQL (banco Oracle) que calcula o saldo de horas extras de cada funcionário. Nela mostra se o funcionário está com horas positivas ou negativas. A questão é que agora pediram para fazer esse cálculo por setor e não por funcionário. Ou seja, preciso somar todos os funcionários do setor e fazer um totalzão das horas positivas e outro das horas negativas do setor.
      Busquei aqui no fórum e o mais próximo que achei foi esse tópico fechado aqui:
      https://forum.imasters.com.br/topic/496657-calculando-positivos-e-negativos-da-soma-total/
      Nesse tópico sugeria criar a linha abaixo usando a query como uma tabela virtual:
      SELECT (CASE WHEN total < 0 THEN valor ELSE 0 END) negativo,
             (CASE WHEN total >= 0 THEN valor ELSE 0 END) positivo
      FROM
      No entanto, quando fui tentar adaptar para a minha sentença SQL, não funcionou. 
      Não sou especialista em SQL e não sei se fiz algo de errado ou se o caso desse tópico em questão não seria a solução para o meu caso.
      A minha sentença atual é essa abaixo (não fui eu quem fez). Agradeço qualquer ajuda para essa pessoa leiga em SQL.
       
       SELECT DISTINCT
      Y.* ,
      TRUNC((trunc(VALOR_HORA * 1.5,2)) *(TO_NUMBER(SUBSTR(HORAS, 0, INSTR(HORAS,
      ':')-1)) + TRUNC(TO_NUMBER(SUBSTR(HORAS, INSTR(HORAS, ':')+1, 99)) /60,2)),2)
      AS SOMA_MAIS_50PORCENTO
      FROM
      (
              SELECT 
                      X.CODCOLIGADA,
                      X.CHAPA,
                      X.NOME,
                      X.NOMEFANTASIA,
                      X.CODSECAO,
                      X.DESCRICAO, 
                      X.FUNCAO,
              ROUND(SALARIO, 2) AS VALOR_HORA,
              TO_CHAR(TRUNC((HORAS * 60) / 3600), 'FM9900') || ':' || TO_CHAR(TRUNC
      (MOD((MINUTOS * 60), 3600) / 60), 'FM00') AS HORAS
              FROM ( 
                      SELECT  
                              A.CODCOLIGADA,
                              A.CHAPA,
                              B.NOME,
                              C.NOMEFANTASIA,
                              B.CODSECAO,
                              D.DESCRICAO,
                              E.NOME AS FUNCAO,
                              B.SALARIO / B.JORNADAMENSAL * 60  AS SALARIO,
                              B.SALARIO SALARIO_ORIGINAL,
                              B.JORNADAMENSAL,
                              CASE WHEN
                              CAST(((SUM
      (((EXTRAFAIXA1+EXTRAFAIXA2+EXTRAFAIXA3+EXTRAFAIXA4+EXTRAFAIXA5)+(EXTRADESC1+EX
      TRADESC2)+(EXTRAFER1+EXTRAFER2)+(EXTRACOMP1+EXTRACOMP2)))-
                              SUM(FALTA+ATRASO))) AS DECIMAL(18,2)) >=0 THEN 
                              CAST(((SUM
      (((EXTRAFAIXA1+EXTRAFAIXA2+EXTRAFAIXA3+EXTRAFAIXA4+EXTRAFAIXA5)+(EXTRADESC1+EX
      TRADESC2)+(EXTRAFER1+EXTRAFER2)+(EXTRACOMP1+EXTRACOMP2)))-
                              SUM(FALTA+ATRASO))) AS DECIMAL(18,2)) ELSE
                              -CAST(((SUM
      (((EXTRAFAIXA1+EXTRAFAIXA2+EXTRAFAIXA3+EXTRAFAIXA4+EXTRAFAIXA5)+(EXTRADESC1+EX
      TRADESC2)+(EXTRAFER1+EXTRAFER2)+(EXTRACOMP1+EXTRACOMP2)))-
                              SUM(FALTA+ATRASO))) AS DECIMAL(18,2))
                              END AS MINUTOS,
                              CAST(((SUM
      (((EXTRAFAIXA1+EXTRAFAIXA2+EXTRAFAIXA3+EXTRAFAIXA4+EXTRAFAIXA5)+(EXTRADESC1+EX
      TRADESC2)+(EXTRAFER1+EXTRAFER2)+(EXTRACOMP1+EXTRACOMP2)))-
                              SUM(FALTA+ATRASO))) AS DECIMAL(18,0)) AS HORAS
                      FROM ABANCOHORFUN A 
                      LEFT OUTER JOIN PFUNC B ON A.CODCOLIGADA=B.CODCOLIGADA AND
      A.CHAPA=B.CHAPA 
                      LEFT OUTER JOIN GFILIAL C ON B.CODCOLIGADA=C.CODCOLIGADA AND
      B.CODFILIAL=C.CODFILIAL
                      LEFT OUTER JOIN PSECAO D ON B.CODCOLIGADA=D.CODCOLIGADA AND
      B.CODSECAO=D.CODIGO
                      LEFT OUTER JOIN PFUNCAO E ON E.CODCOLIGADA = B.CODCOLIGADA AND
      E.CODIGO = B.CODFUNCAO 
                      WHERE B.CODSITUACAO<>'D' 
                                    AND A.DATA >= :PLN_C3_D
      AND A.DATA <= :PLN_C4_D
      AND A.CODCOLIGADA = :PLN_C2_N
                      
                      GROUP BY  A.CODCOLIGADA,
                                          A.CHAPA,
                                          B.NOME,
                                          C.NOMEFANTASIA,
                                          B.CODSECAO,
                                          D.DESCRICAO,
                                          E.NOME,
                                          B.SALARIO / B.JORNADAMENSAL,
                                          B.SALARIO,
                                          B.JORNADAMENSAL
                      ) X
              ) Y

      ORDER BY 5,10
       
    • Por marcos antonio duarte
      como faço para trazer uma soma dessa linha de comando:
       round(vlr.pre_pro_valor * sum(loc.loc_area) over (partition by lnc.id_recur_lanc,loc.loc_area  ) / sum(loc.loc_area) over (partition by lnc.id_recur_lanc) * ins.insum_qtde,3)  as Gasto_total,
       
    • Por marcos antonio duarte
      Tenha uma tabela com dados de codigo de produto (number), produto (char) ,data de entrada do ultimo valor do produto formato (date) e valor do produto (number[9,4] e ), como faço para trazer o campo valor do produto referente a ultima data de valor?
       
      cod_produto |      produto        | data entrada   |   valor  
      1                            arroz              01/01/2017     |   5,80
      1                            arroz              03/01/2017     |   6,10
      2                            feijao             05/02/2017     |   8,00
      3                            macarrão      01/01/2017     |   2,5
      3                            macarrão      15/01/2017     |   2,8
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.