none
select com sub-select RRS feed

  • Pergunta

  • Prezados vejam se possivel, na Sql Abaixo

    SQL

    SELECT
      CASE WHEN (B.DATABAIXA >= '2010-01-01' AND B.DATABAIXA<= '2010-03-17') and B.CODCFO IN ('000438','000757','001467','001223','001525')
      THEN   (B.VALORBAIXADO + ISNULL (B.VALORDESCONTO,0))
    WHEN (B.DATABAIXA >= '2010-01-01' AND B.DATABAIXA<= '2010-05-10') and B.CODCFO IN ('000009')
         THEN    B.VALORBAIXADO

      ELSE
        (B.VALORBAIXADO+ ISNULL (F.VALOR,0) - B.VALORMULTA - B.VALORJUROS + B.VALOROP8) + B.VALORDESCONTO
      END
    FROM FLAN B
    LEFT JOIN FTRBLAN AS F ON F.CODCOLIGADA = B.CODCOLIGADA AND F.IDLAN = B.IDLAN
    WHERE B.TIPOCONTABILLAN='2'
    AND B.IDLAN = '98758'  AND  B.DATABAIXA >= '2010-01-01'  AND B.DATABAIXA<= '2010-12-31'
    UNION
    SELECT
         B.VALORBAIXADO
    FROM FLAN B
    WHERE B.TIPOCONTABILLAN='2'
    AND B.IDDEVOLUCAO IS NOT NULL
    AND B.IDLAN = '98758'  AND  B.DATABAIXA >= '2010-01-01'  AND B.DATABAIXA<= '2010-12-31'

     

    Qual  meu problema e no 2 Union, eu preciso fazer um sub-select porem nao estou conseguindo, seria colocar  tudo que esta no Union no sub select.

    ai eu imagino que que resultado vai esta correto.

    Obrigado a todos 

     

    • Tipo Alterado Gustavo Maia Aguiar terça-feira, 22 de março de 2011 13:01 É uma dúvida e não uma discussão
    segunda-feira, 21 de março de 2011 20:37

Respostas

  • Ronnie,

    Da que forma o seu Sub-Select esta sendo executado não é compatível com a forma que o SQL Server realiza o processamento.

    Como o Maxwell destacou sub-query sem query não é permitido.

    Quando utilizamos Union o nome e quantidade de colunas deve ser a mesma em ambas as querys.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    • Sugerido como Resposta Eder Costa sexta-feira, 25 de março de 2011 17:37
    • Marcado como Resposta Eder Costa segunda-feira, 28 de março de 2011 15:43
    quarta-feira, 23 de março de 2011 20:00

Todas as Respostas

  • Ronnie,

     

    O que você está tentando fazer? Como tem que ser a saída dos seus dados?

    A principio o problema que você deve estar tendo na subquery, é porque uma subquery não pode retornar mais de uma linha, será que não está faltando você colocar um SUM na subquery? Mas vale lembrar que subquerys prejudicam a performance, explique melhor o seu problema que podemos ajudar...

    terça-feira, 22 de março de 2011 02:08
  • Ei Ronnie Von...

    Explica o que voce esta querendo com a query porque nao entendi muito bem onde quer chegar, talvez eu possa lhe ajudar quanto seu problema.

    Abraços


    Maxwell Chaves MCTS - SQL Server 2008 maxwellchaves.wordpress.com.br
    terça-feira, 22 de março de 2011 14:05
  • Pessoal na verdade eu preciso o seguinte:

    NA  1° Sql

    SELECT
      CASE WHEN (B.DATABAIXA >= '2010-01-01' AND B.DATABAIXA<= '2010-03-17') and B.CODCFO IN ('000438','000757','001467','001223','001525')
      THEN   (B.VALORBAIXADO + ISNULL (B.VALORDESCONTO,0))
    WHEN (B.DATABAIXA >= '2010-01-01' AND B.DATABAIXA<= '2010-05-10') and B.CODCFO IN ('000009')
         THEN    B.VALORBAIXADO

      ELSE
        (B.VALORBAIXADO+ ISNULL (F.VALOR,0) - B.VALORMULTA - B.VALORJUROS + B.VALOROP8) + B.VALORDESCONTO
      END
    FROM FLAN B
    LEFT JOIN FTRBLAN AS F ON F.CODCOLIGADA = B.CODCOLIGADA AND F.IDLAN = B.IDLAN
    WHERE B.TIPOCONTABILLAN='2'
    AND B.IDLAN = '98758'  AND  B.DATABAIXA >= '2010-01-01'  AND B.DATABAIXA<= '2010-12-31'

    Me retorno um resultado, eu precisava juntar essa infomaçao com a SQL do Union.para que quando nao tiver resultado da 1° Sql ele pegaria o resultado da 2°

    ficou mas claro agora pessoal, abrigado a todos pela ajuda..

     

    terça-feira, 22 de março de 2011 15:20
  • Ronnie....

    essa situacao vai ter que ser com um UNION mesmo pois nao eh possivel resultar informacao de um sub-select sem informacao no select.

    Para juntar as informacoes do UNION nomeie as colunas com os mesmos nomes e tipos Ok.


    Maxwell Chaves MCTS - SQL Server 2008 maxwellchaves.wordpress.com.br
    • Sugerido como Resposta Eder Costa sexta-feira, 25 de março de 2011 17:37
    terça-feira, 22 de março de 2011 19:13
  • Ronnie,

    Da que forma o seu Sub-Select esta sendo executado não é compatível com a forma que o SQL Server realiza o processamento.

    Como o Maxwell destacou sub-query sem query não é permitido.

    Quando utilizamos Union o nome e quantidade de colunas deve ser a mesma em ambas as querys.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    • Sugerido como Resposta Eder Costa sexta-feira, 25 de março de 2011 17:37
    • Marcado como Resposta Eder Costa segunda-feira, 28 de março de 2011 15:43
    quarta-feira, 23 de março de 2011 20:00