Retornar valor máximo de uma coluna.
02/02/2015
0
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
Post mais votado
02/02/2015
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
Mais Posts
02/02/2015
Isaac Jose
abs....
02/02/2015
Isaac Jose
abs....
Clique aqui para fazer login e interagir na Comunidade :)