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

(Resolvido) ERRO SUB-QUERY


Vinicius Schuh

Pergunta

Boa tarde pessoal

tenho o seguinte SQL:

SELECT     
dbo.tblOrdens_servico.ID As OS, 
dbo.tblOrdens_servico.CD_Cliente,
dbo.Clientes.NomeDoCliente, 
dbo.tblOrdens_servico.CD_Tecnico,
dbo.Funcionários.NomeDoFuncionário, 
dbo.tblOrdens_servico.DT_Os As Abertura, 
dbo.tblOrdens_servico.DT_Fechamento As Fechamento, 
DATEDIFF(Day, dbo.tblOrdens_servico.DT_Os, dbo.tblOrdens_servico.DT_Fechamento) As Total_Dias, 

(Select DATEDIFF(Day, DT_Os, GetDate())from dbo.tblOrdens_Servico where TP_Aberta = 1) As Aberto_Dias, 

OS_Status = Case When (dbo.tblOrdens_Servico.TP_Aberta = 1) Then 'ABE'  When (dbo.tblOrdens_Servico.TP_Andamento = 1) Then 'AND' When (dbo.tblOrdens_Servico.TP_Concluida = 1) Then 'FEC' End,
dbo.tblOrdens_Servico.TP_Aberta,
dbo.tblOrdens_Servico.TP_Andamento,
dbo.tblOrdens_Servico.TP_Concluida  
FROM
dbo.Clientes 
LEFT JOIN
dbo.tblOrdens_servico On dbo.Clientes.CódigoDoCliente = dbo.tblOrdens_servico.CD_Cliente 
LEFT JOIN
dbo.Funcionários On dbo.tblOrdens_servico.CD_Tecnico = dbo.Funcionários.CódigoDoFuncionário
WHERE
(dbo.Funcionários.NomeDoFuncionário Is Not Null)

Se eu executo minha query, ela me retorna o seguinte erro:

Msg 512, Level 16, State 1, Line 2

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

(0 row(s) affected)

Mas, se eu removo a sub-query ele roda sem problemas ou se eu executo apenas a sub-query ele também roda.

O que deixei passar para que não esteja rodando a query+sub-query?

abraço

Editado por Vinicius Schuh
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Bom dia Fulvio, com o TOP 1 roda sem nenhum erro, mas os valores ficam todos duplicados :(

(SELECT TOP 1(DATEDIFF(Day, DT_Os, GetDate())) FROM dbo.tblOrdens_Servico WHERE TP_Aberta = 1) As Aberto_Dias

No meu caso retornou 1026 para todos os registros.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia Fulvio, resolvi hehe. Mudei a parametrização da minha função DATEDIFF e fiz as verificações dos dias, que ficou dessa forma:

DATEDIFF(Day, dbo.tblOrdens_servico.DT_Os, Case When (dbo.tblOrdens_servico.TP_Concluida = 1) then  dbo.tblOrdens_servico.DT_Fechamento Else  getdate() End) As Total_Dias,

Abraços...

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...