Te nho um select que retorna uma consulta normalmente mas foi pedido para que implentasse um campo de nome BACKLOG
que seria a quantidade de dias que uma "anomalia" esta em aberto. ai fiz uma SubQuery da seguinte forma.
(select datediff(day,r.dataronda,getdate()) from ronda r
inner join anomalia a on r.idronda = a.idronda
where a.DataRetirada is not null) as backLog
ai deu certo, mas na hora que eu implemento ela no codigo da o erro dizendo q ela retornou mais de uma valor...
E eu preciso que ela retorne a quantidade de dias de cada anomalia em aberto sera que tem como?!?!?!?!... Vou postar aqui todo o select...
select a.idAnomalia as id, r.nome as nomeResidencia, n.nome as nomeNucleo,
(case when ronda.idSecaoBloqueio IS NOT NULL then s.nome else
(case when ronda.idLocacao IS NOT NULL then l.nome else é.nome end) end)
as trechoFerrovia, a.idAnomalia,ronda.dataRonda,ronda.dataRecebido,
a.dataRetirada,a.dataProgramada,ronda.idSecaoBloqueio,ronda.nomeRonda,
a.matriculaInseriu, a.matriculaRetirou,a.km,a.monitoramento,a.tracado,
a.lado,a.trilho,a.linha,a.medida,a.extensao,tipo.idTipoAnomalia,
a.criticidade, tipo.nome as nomeTipoAnomalia,
a.obs,a.idAnomaliaOriginal,
e.eqpto AS equipamento,
tipoRonda.nome
AS tipoRonda,
[b](select datediff(day,r.dataronda,getdate()) from ronda r
inner join anomalia a on r.idronda = a.idronda
where a.DataRetirada is not null) as backLog[/b]
from anomalia a
left join equipamento e
on a.idEquipamento = e.idEquipamento
inner join ronda on a.idRonda = ronda.idRonda
left join tipoRonda on ronda.idTipoRonda = tipoRonda.idTipoRonda
inner join tipoAnomalia tipo on a.idTipoAnomalia = tipo.idtipoAnomalia
left join locacao l on ronda.idLocacao = l.idLocacao
left join entreHouse é on ronda.idEntreHouse = é.idEntreHouse
left join SecaoBloqueio s on ronda.idSecaoBloqueio = s.idSecaoBloqueio
left join nucleo n on s.idNucleo = n.idNucleo inner join residencia
AS r ON (n.idResidencia = r.idResidencia
OR l.idResidencia = r.idResidencia OR é.idResidencia = r.idResidencia)
where (s.ativa=1 OR l.ativa=1 OR é.ativa=1)
and (ronda.idSecaoBloqueio in (SELECT s.idsecaobloqueio FROM
((ferrovia AS f INNER JOIN corredor AS c ON f.idFerrovia=c.idFerrovia)
INNER JOIN residencia AS r ON c.idCorredor=r.idCorredor)
INNER JOIN nucleo as n on r.idResidencia = n.idResidencia
INNER JOIN secaoBloqueio AS s ON n.idNucleo=s.idNucleo
where f.idFerrovia = 1 and c.idCorredor = 9 ) OR ronda.idLocacao in
(SELECT l.idLocacao FROM ((ferrovia AS f INNER JOIN corredor AS c
ON f.idFerrovia=c.idFerrovia) INNER JOIN residencia AS r
ON c.idCorredor=r.idCorredor) INNER JOIN locacao as l
on r.idResidencia = l.idResidencia where f.idFerrovia = 1
and c.idCorredor = 9 ) OR ronda.idEntreHouse in
(SELECT é.idEntreHouse FROM ((ferrovia AS f INNER JOIN corredor AS c
ON f.idFerrovia=c.idFerrovia) INNER JOIN residencia AS r
ON c.idCorredor=r.idCorredor) INNER JOIN entreHouse as é
on r.idResidencia = é.idResidencia where f.idFerrovia = 1
and c.idCorredor = 9 )) and idAnomaliaOriginal = 0 and
(ronda.dataRonda >= '12/10/2007 00:00:00' and ronda.dataRonda <= '01/15/2008 00:00:00'
and (ronda.dataRonda <= '01/15/2008 00:00:00' OR a.dataRetirada is NULL))order by dataRonda
Pergunta
Angelo Augusto
Pessoal.. O problema é o seguinte:
Te nho um select que retorna uma consulta normalmente mas foi pedido para que implentasse um campo de nome BACKLOG
que seria a quantidade de dias que uma "anomalia" esta em aberto. ai fiz uma SubQuery da seguinte forma.
ai deu certo, mas na hora que eu implemento ela no codigo da o erro dizendo q ela retornou mais de uma valor... E eu preciso que ela retorne a quantidade de dias de cada anomalia em aberto sera que tem como?!?!?!?!... Vou postar aqui todo o select...A todos o meu muito obrigado
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
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.