Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) ERRO SUB-SELECT


Vinicius Schuh

Pergunta

Salve Galera! Estou precisando da ajuda de vc´s amigos...

Estou realizando um script para um relatorio que ira exibir informações sobre condicionais em uma loja de confecções. Até ai beleza, tera as seguintes informações:

1º - Data do condicional (Data que o condicional foi feito);

2º - Numero do Condicional;

3º - Cliente;

4º - Venda (Se o condicional foi transformado em venda, na tabela Condicional o campo NO_Venda é preenchido com o número da venda);

5º - Itens (Total lançados no condicional);

6º - Itens Vendidos (Ainda não implementado no script, mas sera o total dos itens que foram transformados em venda a partir do condicional);

7º - Total (Soma dos valores dos itens que foram para a venda, no script é o sub-select);

8º - Situação (Se o condicional esta Fechado ou em Aberto, determinado pelo campo Processado na tabela Condicional);

Dentro do meu sub-select eu preciso realizar a seguinte validação, soma o Total dos itens que não foram devolvidos e foram transformados em venda. Para verificar essa situação uso a regra que esta no meu WHERE. Mas ao rodar meu script gera o seguinte erro:

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

Alguém poderia me dar uma luz? Segue Script e desde já agradeço. Um bom dia a todos!

SELECT   
    dbo.Condicional.DataDoCondicional, 
    dbo.Condicional.NumeroDoCondicional,
    dbo.Condicional.CódigoDoCliente, 
    dbo.Condicional.NO_Venda,
    (SELECT 
              Sum(dbo.[Detalhes do Condicional].TotalDaLinha) As VL_Total 
         FROM 
              dbo.[Detalhes Do Condicional] 
         LEFT JOIN 
              dbo.[Condicional] On dbo.[Detalhes Do Condicional].NumeroDoCondicional = dbo.[Condicional].NumeroDoCondicional 
         WHERE 
              dbo.Condicional.NO_Venda Is Not Null And dbo.[Detalhes do Condicional].NO_Devolvido = '0' 
         GROUP BY 
              dbo.Condicional.NO_Venda) As Total_Venda,
    dbo.Clientes.CódigoDoCliente As Cod_Cliente, 
    dbo.Clientes.NomeDoCliente,
    Situacao = Case Dbo.[Condicional].Processado When 'N' Then 'Aberto'  When 'S' Then 'Fechado'End,
    Dias_Abertos = Case When (Dbo.[Condicional].Processado = 'N') Then DATEDIFF(Day, dbo.Condicional.DataDoCondicional, GetDate()) End,
    Dias = Case When (Dbo.[Condicional].Processado = 'N') Then 'Dias' End
FROM
    dbo.Condicional 
LEFT JOIN
    dbo.Clientes On dbo.Condicional.CódigoDoCliente = dbo.Clientes.CódigoDoCliente
LEFT JOIN 
    dbo.[Detalhes Do Condicional] On dbo.Condicional.NumeroDoCondicional = dbo.[Detalhes Do Condicional].NumeroDoCondicional
GROUP BY
    dbo.Condicional.DataDoCondicional,
    dbo.Condicional.NumeroDoCondicional,
    dbo.Condicional.CódigoDoCliente,
    dbo.Condicional.Processado,
    dbo.Condicional.NO_Venda,
    dbo.[Detalhes do Condicional].NO_Devolvido,
    dbo.Clientes.CódigoDoCliente,
    dbo.Clientes.NomeDoCliente,
    dbo.[Detalhes Do Condicional].NumeroDoCondicional
ORDER BY
    dbo.Condicional.DataDoCondicional ASC

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Problema resolvido, adicionei uma nova verificação ao meu script e rodou 100% como o esperado. Segue Script corrigido. Até +

SELECT        
    Condicional.DataDoCondicional, 
    dbo.Condicional.NumeroDoCondicional, 
    dbo.Condicional.CódigoDoCliente, 
    dbo.Clientes.NomeDoCliente,    
    COALESCE(dbo.Condicional.NO_Venda, '000000') as NO_Venda,
    SUM(dbo.[Detalhes do Condicional].Quantidade) As Itens_Cond,
    isnull((SELECT 
                Sum(D.TotalDaLinha) As VL 
            FROM 
                [Detalhes Do Condicional] D 
            INNER JOIN 
                [Condicional] C On D.NumeroDoCondicional = C.NumeroDoCondicional 
            AND NOT 
                (C.NO_Venda Is Null) 
            WHERE D.NO_Devolvido = 0 and c.NO_Venda = dbo.Condicional.NO_Venda),0) As Total_Venda,
    Case Dbo.[Condicional].Processado When 'N' Then 'Aberto' ELSE 'Fechado' End AS Situacao,
    Case When (Dbo.[Condicional].Processado = 'N') Then DATEDIFF(Day, dbo.Condicional.DataDoCondicional, GetDate()) ELSE 0 End AS Dias_Abertos,
    Case When (Dbo.[Condicional].Processado = 'N') Then 0 ELSE DATEDIFF(Day, dbo.Condicional.DataDoCondicional, GetDate()) End AS Dias
FROM
    dbo.Condicional
INNER JOIN  
    dbo.Clientes On dbo.Condicional.CódigoDoCliente = dbo.Clientes.CódigoDoCliente
INNER JOIN
    dbo.[Detalhes Do Condicional] On dbo.Condicional.NumeroDoCondicional = dbo.[Detalhes Do Condicional].NumeroDoCondicional
GROUP BY
    dbo.Condicional.DataDoCondicional, 
    dbo.Condicional.NumeroDoCondicional, 
    dbo.Condicional.CódigoDoCliente, 
    dbo.Condicional.Processado, 
    dbo.Condicional.NO_Venda, 
    dbo.Clientes.CódigoDoCliente,
    dbo.Clientes.NomeDoCliente
ORDER BY
    dbo.Condicional.NumeroDoCondicional

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...