none
Modificando Query RRS feed

  • Pergunta

  • SELECT 
      Situacao = 'Possível inconsistência detectada na combinação da NOTA_CONT x NOTA_SIST.',
     *
    From 
      CONT T1 
    Where
      (not Exists(Select * From SIST T2 Where (T2.NOTA = T1.NOTA) and (T2.VALOR = T1.VALOR) and (T2.CFOP = T1.CFOP))AND MES =7)
    Union 
    Select
      Situacao = 'Possível inconsistência detectada na combinação da NOTA_SIST x NOTA_CONT',
     *
    From
      SIST T2
    Where
      (not Exists(Select * From CONT T1 Where (T2.NOTA = T1.NOTA) and (T2.VALOR = T1.VALOR) and (T2.CFOP = T1.CFOP))AND MES =7)
    order by NOTA

    Como eu faço usando essa query ter acesso aos campos do segundo select ?

    segunda-feira, 13 de agosto de 2012 18:56

Respostas

  • Tente assim:

    select * from

    (SELECT 
      Situacao = 'Possível inconsistência detectada na combinação da NOTA_CONT x NOTA_SIST.',
     *
    From 
      CONT T1 
    Where
      (not Exists(Select * From SIST T2 Where (T2.NOTA = T1.NOTA) and (T2.VALOR = T1.VALOR) and (T2.CFOP = T1.CFOP))AND MES =7)
    Union 
    Select
      Situacao = 'Possível inconsistência detectada na combinação da NOTA_SIST x NOTA_CONT',
     *
    From
      SIST T2
    Where
      (not Exists(Select * From CONT T1 Where (T2.NOTA = T1.NOTA) and (T2.VALOR = T1.VALOR) and (T2.CFOP = T1.CFOP))AND MES =7)) temp

    left join (Select
      Situacao = 'Possível inconsistência detectada na combinação da NOTA_SIST x NOTA_CONT',
     *
    From
      SIST T2
    Where
      (not Exists(Select * From CONT T1 Where (T2.NOTA = T1.NOTA) and (T2.VALOR = T1.VALOR) and (T2.CFOP = T1.CFOP))AND MES =7)) temp1

    on temp.coluna = temp1.coluna

    Ou seja, pegue toda sua consulta original, transforme em tabela TEMP, depois pegue a segunda consulta que vem depois do UNION e crie como TEMP1, faça os relacionamentos entre elas.

    Fiz um teste em meu ambiente e o numero de registros permaneceu o mesmo.


    Marco Antônio Pinheiro / MCTS - MCC http://marcoantoniopinheiro.blogspot.com

    • Marcado como Resposta gildo_santos terça-feira, 14 de agosto de 2012 18:17
    terça-feira, 14 de agosto de 2012 13:00

Todas as Respostas

  • Gildo,

    Você teria que criar em forma de tabela, tipo assim:

    select * from

    (SELECT 
      Situacao = 'Possível inconsistência detectada na combinação da NOTA_CONT x NOTA_SIST.',
     *
    From 
      CONT T1 
    Where
      (not Exists(Select * From SIST T2 Where (T2.NOTA = T1.NOTA) and (T2.VALOR = T1.VALOR) and (T2.CFOP = T1.CFOP))AND MES =7)) temp

    inner join
    (Select
      Situacao = 'Possível inconsistência detectada na combinação da NOTA_SIST x NOTA_CONT',
     *
    From
      SIST T2
    Where
      (not Exists(Select * From CONT T1 Where (T2.NOTA = T1.NOTA) and (T2.VALOR = T1.VALOR) and (T2.CFOP = T1.CFOP))AND MES =7)) temp1

    on temp.campos em comum com temp1 = temp1.campos em comum com temp

    Dependendo do resultado tente utilizar com LEFT JOIN


    Marco Antônio Pinheiro / MCTS - MCC http://marcoantoniopinheiro.blogspot.com

    segunda-feira, 13 de agosto de 2012 20:33
  • Bom dia

    Preciso juntar os dois Select.. se eu colocar inner join a nota 95456 não aparece no resultado.. Usando o union como descrito acima o resulta é o correto, mais preciso fazer um calculo(subtração) entre os valores da tabela cont e tabela sist desse resultado

    resultado do   Primeiro Select

    Possível inconsistência detectada na   combinação da NOTA_CONT x NOTA_SIST. 7 77421 1403 1073,63
    Possível inconsistência detectada na   combinação da NOTA_CONT x NOTA_SIST. 7 143902 1102 2752,1
    Possível inconsistência detectada na   combinação da NOTA_CONT x NOTA_SIST. 7 143902 1403 140,73
    Possível inconsistência detectada na   combinação da NOTA_CONT x NOTA_SIST. 7 460416 1102 337,6
    Possível inconsistência detectada na   combinação da NOTA_CONT x NOTA_SIST. 7 460416 1403 806,02
    Possível inconsistência detectada na   combinação da NOTA_CONT x NOTA_SIST. 7 8900013 1403 2023,06
    Resultado do Segundo Select
    Possível inconsistência detectada na   combinação da NOTA_SIST x NOTA_CONT 7 77421 1102 226,04
    Possível inconsistência detectada na   combinação da NOTA_SIST x NOTA_CONT 7 77421 1403 847,59
    Possível inconsistência detectada na   combinação da NOTA_SIST x NOTA_CONT 7 95456 1403 1636,86
    Possível inconsistência detectada na   combinação da NOTA_SIST x NOTA_CONT 7 143902 1102 2751,1
    Possível inconsistência detectada na   combinação da NOTA_SIST x NOTA_CONT 7 143902 1403 141,72
    Possível inconsistência detectada na   combinação da NOTA_SIST x NOTA_CONT 7 231061 1102 540,24
    Possível inconsistência detectada na   combinação da NOTA_SIST x NOTA_CONT 7 231061 1403 148,95
    Possível inconsistência detectada na   combinação da NOTA_SIST x NOTA_CONT 7 460416 1102 242,44
    Possível inconsistência detectada na   combinação da NOTA_SIST x NOTA_CONT 7 460416 1403 900,78
    Possível inconsistência detectada na   combinação da NOTA_SIST x NOTA_CONT 7 890013 1403 2023,06
    terça-feira, 14 de agosto de 2012 11:58
  • Você tentou com o LEFT JOIN?


    Marco Antônio Pinheiro / MCTS - MCC http://marcoantoniopinheiro.blogspot.com

    terça-feira, 14 de agosto de 2012 12:20
  • Tentei sim, mais não apareceu a nota 95456
    terça-feira, 14 de agosto de 2012 12:46
  • Tente assim:

    select * from

    (SELECT 
      Situacao = 'Possível inconsistência detectada na combinação da NOTA_CONT x NOTA_SIST.',
     *
    From 
      CONT T1 
    Where
      (not Exists(Select * From SIST T2 Where (T2.NOTA = T1.NOTA) and (T2.VALOR = T1.VALOR) and (T2.CFOP = T1.CFOP))AND MES =7)
    Union 
    Select
      Situacao = 'Possível inconsistência detectada na combinação da NOTA_SIST x NOTA_CONT',
     *
    From
      SIST T2
    Where
      (not Exists(Select * From CONT T1 Where (T2.NOTA = T1.NOTA) and (T2.VALOR = T1.VALOR) and (T2.CFOP = T1.CFOP))AND MES =7)) temp

    left join (Select
      Situacao = 'Possível inconsistência detectada na combinação da NOTA_SIST x NOTA_CONT',
     *
    From
      SIST T2
    Where
      (not Exists(Select * From CONT T1 Where (T2.NOTA = T1.NOTA) and (T2.VALOR = T1.VALOR) and (T2.CFOP = T1.CFOP))AND MES =7)) temp1

    on temp.coluna = temp1.coluna

    Ou seja, pegue toda sua consulta original, transforme em tabela TEMP, depois pegue a segunda consulta que vem depois do UNION e crie como TEMP1, faça os relacionamentos entre elas.

    Fiz um teste em meu ambiente e o numero de registros permaneceu o mesmo.


    Marco Antônio Pinheiro / MCTS - MCC http://marcoantoniopinheiro.blogspot.com

    • Marcado como Resposta gildo_santos terça-feira, 14 de agosto de 2012 18:17
    terça-feira, 14 de agosto de 2012 13:00