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
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
Curtir tópico
+ 0
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
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
Responder
Mais Posts
02/02/2015
Isaac Jose
por nada precisando é so dar um grito que alguem por aqui ajuda..
abs....
abs....
Responder
02/02/2015
Isaac Jose
por nada precisando é so dar um grito que alguem por aqui ajuda..
abs....
abs....
Responder
Clique aqui para fazer login e interagir na Comunidade :)