- Este tópico contém 4 respostas, 2 vozes e foi atualizado pela última vez 9 anos, 10 meses atrás por Edinei.
-
AutorPosts
-
23 de janeiro de 2015 às 8:53 pm #107319EdineiParticipante
Olá pessoal,
Tenho o seguinte select:
SELECT
CAST (PROAUX.CDEMPRESA AS VARCHAR2(20)) CDEMPRESA,
CAST (PROAUX.CDKIT AS VARCHAR2(20)) CDKIT,
CAST (PROAUX.CDITENSKIT AS VARCHAR2(80)) CDITENSKIT,
CAST ((PROAUX.QTESTOQUEITENS) AS VARCHAR2(80)) QTESTOQUEITENS
FROM
(SELECT CDEMPRESA, CDKIT, WM_CONCAT(CDPRODUTO) CDITENSKIT , WM_CONCAT(NVL(EST.ESTOQUE,0) - NVL(EST.RESERVADO,0)) QTESTOQUEITENS --SUM (EST.ESTOQUE) - SUM(ABS(EST.RESERVADO))
FROM
TBINTPRODUTOKIT PRO
LEFT JOIN JIVA.TGFEST EST ON EST.CODEMP = PRO.CDEMPRESA AND PRO.CDPRODUTO = EST.CODPROD
GROUP BY CDEMPRESA,CDKIT) PROAUX;Usei a função WM_CONCAT para trazer os estoques dos itens do kit separados por virgula com a intenção de usar o LEAST na view a seguir:
SELECT
CAST (PRO.CDEMPRESA AS VARCHAR2(20)) CDEMPRESA,
CAST ('0' AS VARCHAR2(20)) CDREPRESENTANTE,
CAST (PRO.CDKIT AS VARCHAR2(20)) CDPRODUTO,
CAST ('0' AS VARCHAR2(20)) CDITEMGRADE1,
CAST ('0' AS VARCHAR2(20)) CDITEMGRADE2,
CAST ('0' AS VARCHAR2(20)) CDITEMGRADE3,
CAST (least(pro.QTESTOQUEITENS) AS VARCHAR2(20)) QTESTOQUE
FROM
VWESTOQUEKIT PRO ;No entanto o least só retorna o menor registro quando é separado por vírgulas,
como está vindo entre aspas ”, não consigo mostrar o menor.
select least('4,77,358,1921,570,77,174,1,129') from dual;
select least(4,77,358,1921,570,77,174,1,129) from dual;
Obs: não estou usando os exmeplos com o DUAL.
Preciso de algo que converta o campo QTESTOQUEITENS da primeira view para Number
ou algo do tipo para o least poder comparar.23 de janeiro de 2015 às 9:06 pm #107320rmanParticipante@Edinei
WM_CONCAT? LEAST? VIEW? CAST?
Apenas a FUNCTION MIN não resolve todo o problema?
23 de janeiro de 2015 às 9:13 pm #107321EdineiParticipanteNão pois, um KIT de produto possui vários itens e tanto o KIT quanto os itens do KIT estão na TGFEST e preciso retornar somente o estoque dos itens do KIT. Nesse caso cada item gera uma linha no banco ao qual estou integrando. Usei o WM_Concat para trazer em uma única linha estes estoques e depois iria usar o LEAST.
23 de janeiro de 2015 às 9:38 pm #107322rmanParticipante@Edinei
Não entendi o que você precisa trazer ainda…
Você está trazendo uma lista de produto e uma lista de estoque do produto, e está tentando aplicar o LEAST para pegar o menor item na lista de estoque do produto. Não consegui ver sentido nisso.
O que realmente a sua consulta como um todo deve trazer?
23 de janeiro de 2015 às 10:52 pm #107323EdineiParticipantepreciso trazer o menor numero do –>> CAST (least(pro.QTESTOQUEITENS) AS VARCHAR2(20)) QTESTOQUE
sendo que o campo pro.QTESTOQUEITENS vem com vários números separados por vírgulas. Preciso retornar o menor.
-
AutorPosts
- Você deve fazer login para responder a este tópico.