Retornar valor máximo de uma coluna.

02/02/2015

0

Bom dia

POR FAVOR


Segue o codigo e a tabela. O caso é o seguinte, preciso juntar 3 tabelas, a de produtos (uma quarta) nao precisa porem ela retorna apenas o código estruturado que é irrelevante.

O problemas esta na ordem de produção que sai com linha duplicada, dentro da tabela do select abaixo


SELECT * FROM OPER_ORD_PRODUC_FUNC WHERE OrdProducNum = '0000000242'

EmpCod OrdProducNum ProdCodEstr ProdOperSeq OperOrdProducSeq FuncCod OperOrdProducFuncApont
1.04 0000000242 0001.0001.0001.0012.0003 10 801 0000055 Sim
1.04 0000000242 0001.0001.0001.0012.0003 10 802 0000055 Sim


Eu sei o que eu preciso, porem nao sei como faço. A idéia é que ele me retorne apenas o numero MAX ou MIN da coluna OperOrdProducSeq pertencente a tabela OPER_ORD_PRODUC. (OOP).

Eu reduzi o código para ficar visível o problema


Select OOP.EmpCod, OPF.OperOrdProducSeq, FuncNome, OOP.ProdOperSeq, OperOrdProducStat, OOP.OrdProducNum, OperOrdProducDataHorainic,
OperOrdProducDataHoraFim, P.ProdNome, OOP.OperOrdProducQtdBoa, p.ProdCodAlt, OOP.OperOrdProducQtdCalc

From

FUNCIONARIO F With(Nolock)
Left OUTER JOIN OPER_ORD_PRODUC_FUNC OPF With(NoLock) ON F.FuncCod = OPF.FuncCod
Left OUTER JOIN OPER_ORD_PRODUC OOP With(NoLock) ON OOP.OrdProducNum = OPF.OrdProducNum
LEFT OUTER JOIN PRODUTO p WITH(NOLOCK) ON OOP.ProdCodEstr = p.ProdCodEstr

WHERE OOP.OrdProducNum = '0000000242' AND oop.EmpCod = '1.04'

AND OOP.OperOrdProducQtdBoa !='0.000000000'

Retorna Resultado:

EmpCod OperOrdProducSeq FuncNome ProdOperSeq OperOrdProducStat OrdProducNum OperOrdProducDataHorainic OperOrdProducDataHoraFim ProdNome OperOrdProducQtdBoa ProdCodAlt OperOrdProducQtdCalc

1.04 801 SERGIO N DO NASCIMENTO JUNIOR 10 Finalizada Total 0000000242 2015-01-14 08:20:00.000 2015-01-16 08:20:00.000 INCUBADORA BOD COM FOTOPERIODO E ALTERNANCIA DE TEMPERATURA 2.000000000 LUCA-161/03 2.000000000
1.04 802 SERGIO N DO NASCIMENTO JUNIOR 10 Finalizada Total 0000000242 2015-01-14 08:20:00.000 2015-01-16 08:20:00.000 INCUBADORA BOD COM FOTOPERIODO E ALTERNANCIA DE TEMPERATURA 2.000000000 LUCA-161/03 2.000000000


PRECISO TIRAR A MAX OU A MINIMA DA SEGUNDA COLUNA (OPF.OperOrdProducSeq) , TANTO FAZ se maximo ou minimo, preciso que apenas 1 campo seja mostrado, e com max e min eu tenho certeza que se tiver 10, vai aparecer 1 só, uma vez que OPERORDPRODUCSEQ é tipo uma PKey.

1.04 801 SERGIO N DO NASCIMENTO JUNIOR
1.04 802 SERGIO N DO NASCIMENTO JUNIOR




O código todo é esse:

Select OOP.EmpCod, OPf.OperOrdProducSeq, FuncNome, OOP.ProdOperSeq, OperOrdProducStat, OOP.OrdProducNum, OperOrdProducDataHorainic, OperOrdProducDataHoraFim, P.ProdNome, OOP.OperOrdProducQtdBoa, p.ProdCodAlt, OOP.OperOrdProducQtdCalc

From

FUNCIONARIO F With(Nolock)
Left OUTER JOIN OPER_ORD_PRODUC_FUNC OPF With(NoLock) ON F.FuncCod = OPF.FuncCod
Left OUTER JOIN OPER_ORD_PRODUC OOP With(NoLock) ON OOP.OrdProducNum = OPF.OrdProducNum
LEFT OUTER JOIN PRODUTO p WITH(NOLOCK) ON OOP.ProdCodEstr = p.ProdCodEstr

WHERE

CONVERT(DATETIME, CONVERT(VARCHAR(10), OperOrdProducDataHorainic, 120)) >= :dDataI
AND CONVERT(DATETIME, CONVERT(VARCHAR(10), OperOrdProducDataHoraFim, 120)) <= :dDataF
AND OOP.ProdCodEstr = P.ProdCodEstr
AND (OOP.EmpCod = :EMPRESA OR :EMPRESA = '')
AND (OOP.ProdOperSeq = :OPERACAO OR :OPERACAO = '')
AND (F.FuncCod = :FUNCIONARIO OR :FUNCIONARIO = '')
AND OOP.OperOrdProducStat = 'Finalizada Total'
AND OOP.OperOrdProducQtdBoa IS NOT NULL
Order by OperOrdProducDataHoraInic



onde tem :NOME são filtros retirados de um XML

RETORNO

EmpCod OPf.OperOrdProducSeq FuncNome ProdOperSeq OperOrdProducStat OrdProducNum OperOrdProducDataHorainic OperOrdProducDataHoraFim ProdNome OperOrdProducQtdBoa ProdCodAlt OperOrdProducQtdCalc
1.01 108 TASSO ANDRE CORADI 10 Manual 0000000005 2013-06-18 17:12:00.000 2013-06-18 17:12:00.000 CAPELA DE EXAUSTAO DE GASES 1.000000000 LUCA-15 1.000000000
1.01 201 TASSO ANDRE CORADI 10 Manual 0000000007 2013-07-02 07:50:00.000 2013-07-02 07:50:00.000 CAPELA DE EXAUSTAO DE GASES 1.000000000 LUCA-10 1.000000000
Juliano Borges

Juliano Borges

Responder

Post mais votado

02/02/2015

Select OOP.EmpCod, max(OPf.OperOrdProducSeq)OperOrdProducSeq, FuncNome,
OOP.ProdOperSeq, OperOrdProducStat, OOP.OrdProducNum,
OperOrdProducDataHorainic, OperOrdProducDataHoraFim,
P.ProdNome, OOP.OperOrdProducQtdBoa, p.ProdCodAlt, OOP.OperOrdProducQtdCalc

From

FUNCIONARIO F With(Nolock)
Left OUTER JOIN OPER_ORD_PRODUC_FUNC OPF With(NoLock) ON F.FuncCod = OPF.FuncCod
Left OUTER JOIN OPER_ORD_PRODUC OOP With(NoLock) ON OOP.OrdProducNum = OPF.OrdProducNum
LEFT OUTER JOIN PRODUTO p WITH(NOLOCK) ON OOP.ProdCodEstr = p.ProdCodEstr

WHERE

CONVERT(DATETIME, CONVERT(VARCHAR(10), OperOrdProducDataHorainic, 120)) >= :dDataI
AND CONVERT(DATETIME, CONVERT(VARCHAR(10), OperOrdProducDataHoraFim, 120)) <= :dDataF
AND OOP.ProdCodEstr = P.ProdCodEstr
AND (OOP.EmpCod = :EMPRESA OR :EMPRESA = '')
AND (OOP.ProdOperSeq = :OPERACAO OR :OPERACAO = '')
AND (F.FuncCod = :FUNCIONARIO OR :FUNCIONARIO = '')
AND OOP.OperOrdProducStat = 'Finalizada Total'
AND OOP.OperOrdProducQtdBoa IS NOT NULL
group by
OOP.EmpCod, FuncNome,
OOP.ProdOperSeq, OperOrdProducStat, OOP.OrdProducNum,
OperOrdProducDataHorainic, OperOrdProducDataHoraFim,
P.ProdNome, OOP.OperOrdProducQtdBoa, p.ProdCodAlt, OOP.OperOrdProducQtdCalc
Order by OperOrdProducDataHoraInic

Isaac Jose

Isaac Jose
Responder

Mais Posts

02/02/2015

Juliano Borges

Amigão, você vai pro céu!

MUITO MUITO AGRADECIDO!
Responder

02/02/2015

Isaac Jose

por nada precisando é so dar um grito que alguem por aqui ajuda..

abs....
Responder

02/02/2015

Isaac Jose

por nada precisando é so dar um grito que alguem por aqui ajuda..

abs....
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar