Usuário com melhor resposta
Retorno de select por colunas

Pergunta
-
Bom dia, conforme a consulta abaixo, gostaria de saber se há possibilidades da consulta retornar o campo CUSTOUNITARIO para cada código do campo CODTABMATMED. Cada CUSTOUNITARIO de cada CODTABMATMED.
WITH TABELA17 AS( SELECT DISTINCT TPRODUTO.CODIGOREDUZIDO, TPRODUTO.NOMEFANTASIA, TPRODUTODEF.CUSTOUNITARIO, SZITEMESTQPRECO.CODTABMATMED FROM TPRODUTO, TPRODUTODEF, SZPRD, SZITEMESTQPRECO WHERE TPRODUTO.IDPRD = TPRODUTODEF.IDPRD AND TPRODUTO.IDPRD = SZPRD.IDPRD AND SZPRD.IDPRD = SZITEMESTQPRECO.IDPRD AND TPRODUTO.INATIVO <> 1 AND TPRODUTO.TIPO = 'P' AND SZPRD.TIPOITEM IN ('E', 'A') AND SZITEMESTQPRECO.CODTABMATMED = '17' --ORDER BY NOMEFANTASIA ), TABELA12 AS( SELECT DISTINCT TPRODUTO.CODIGOREDUZIDO, TPRODUTO.NOMEFANTASIA, TPRODUTODEF.CUSTOUNITARIO, SZITEMESTQPRECO.CODTABMATMED FROM TPRODUTO, TPRODUTODEF, SZPRD, SZITEMESTQPRECO WHERE TPRODUTO.IDPRD = TPRODUTODEF.IDPRD AND TPRODUTO.IDPRD = SZPRD.IDPRD AND SZPRD.IDPRD = SZITEMESTQPRECO.IDPRD AND TPRODUTO.INATIVO <> 1 AND TPRODUTO.TIPO = 'P' AND SZPRD.TIPOITEM IN ('E', 'A') AND SZITEMESTQPRECO.CODTABMATMED = '12' --ORDER BY NOMEFANTASIA ) SELECT * FROM TABELA17 UNION ALL SELECT * FROM TABELA12
- Editado Artur L. Campos quarta-feira, 7 de junho de 2017 20:20
Respostas
-
Experimente trocar as colunas de
SZ17.CODTABMATMED, SZ12.CODTABMATMED
para
SZ17.PRECO AS PRECO17, SZ12.PRECO AS PRECO12
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Artur L. Campos quinta-feira, 8 de junho de 2017 13:17
Todas as Respostas
-
Bom dia,
Artur, as colunas abaixo pertencem a qual tabela?
CODMATMED
CODTABMATMED
INATIVO
TIPO
TIPOITEM
Assinatura: http://www.imoveisemexposicao.com.br
-
-
Boa tarde,
Artur, você pode postar um pequeno exemplo do resultado da query que você postou no início e como gostaria que ficasse esse mesmo resultado com as modificações?
Assinatura: http://www.imoveisemexposicao.com.br
-
Como estou usando o UNION ALL entre os selects, quando todos os itens com o SZITEMESTQPRECO.CODTABMATMED = '17' são percorridos, a consulta passa a exibir novamente todos os itens só que em relação a o SZITEMESTQPRECO.CODMATMED = '12', como exemplo abaixo.
004064 CELESTONE NULL 17 004083 MORFINA - 2MG/2ML 4.3700 17 004085 CLORETO DE SODIO 0,9 % 10 ML 0.0000 17 004142 FANCICLOVIR 125 MG - CO 5.7330 17 004162 CAT CRO SIMPLES Nº 0 1854T 7.2958 17 004167 AMICACINA 100MG/2ML - AM 0.9800 17 000019 MONONYLON 4 C/A 13502 T 4.5300 12 000020 SERINGA 60 ML - BICO CATETER 4.0604 12 000021 LAMINA BISTURI 12 1.0000 12 000023 ABOCATH 24 (0,7 X 19 MM) 0.0000 12 000024 TRANSOFIX (ADAPTADOR P/ FRASCO DE SORO) 1.6500 12 000031 SONDA NASO CURTA 12 CM 9.0000 12 000032 LAMINA BISTURI 24 1.2400 12
Minha ideia é colocar uma coluna com a descrição do produto, e mais duas, uma com os valores referentes ao SZITEMESTQPRECO.CODTABMATMED = '17', e outra com o SZITEMESTQPRECO.CODTABMATMED = '12'. Será que há possibilidade de adaptar essa query?
-
Não estou conseguindo entender muito bem a estrutura das suas tabelas. No início você disse que queria obter o custo unitário por CODTABMATMED mas pelo que entendi o custo unitário vem da tabela TPRODUTODEF e essa tabela não tem nenhuma relação com a tabela SZITEMESTQPRECO nessa query.
De qualquer forma, segue uma sugestão para teste para ver se está próximo do que você precisa:
SELECT DISTINCT TPRODUTO.CODIGOREDUZIDO, TPRODUTO.NOMEFANTASIA, TPRODUTODEF.CUSTOUNITARIO, SZ17.CODTABMATMED, SZ12.CODTABMATMED FROM TPRODUTO INNER JOIN TPRODUTODEF ON TPRODUTODEF.IDPRD = TPRODUTO.IDPRD INNER JOIN SZPRD ON SZPRD.IDPRD = TPRODUTO.IDPRD LEFT JOIN SZITEMESTQPRECO AS SZ17 ON SZ17.IDPRD = TPRODUTO.IDPRD LEFT JOIN SZITEMESTQPRECO AS SZ12 ON SZ12.IDPRD = TPRODUTO.IDPRD WHERE TPRODUTO.INATIVO <> 1 AND TPRODUTO.TIPO = 'P' AND SZPRD.TIPOITEM IN ('E', 'A') AND (SZ17.CODTABMATMED = '17' OR SZ17.CODTABMATMED IS NULL) AND (SZ12.CODTABMATMED = '12' OR SZ12.CODTABMATMED IS NULL)
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
-
-
Experimente trocar as colunas de
SZ17.CODTABMATMED, SZ12.CODTABMATMED
para
SZ17.PRECO AS PRECO17, SZ12.PRECO AS PRECO12
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Artur L. Campos quinta-feira, 8 de junho de 2017 13:17
-
Funcionou exatamente como pretendido. Muito Obrigado!!! Segue o código completo
SELECT DISTINCT TPRODUTO.CODIGOPRD, TPRODUTO.NOMEFANTASIA, TPRODUTODEF.CUSTOUNITARIO, SZ17.PRECO AS PRECO17, SZ12.PRECO AS PRECO12 FROM TPRODUTO INNER JOIN TPRODUTODEF ON TPRODUTODEF.IDPRD = TPRODUTO.IDPRD INNER JOIN SZPRD ON SZPRD.IDPRD = TPRODUTO.IDPRD LEFT JOIN SZITEMESTQPRECO AS SZ17 ON SZ17.IDPRD = TPRODUTO.IDPRD LEFT JOIN SZITEMESTQPRECO AS SZ12 ON SZ12.IDPRD = TPRODUTO.IDPRD WHERE TPRODUTO.INATIVO <> 1 AND TPRODUTO.TIPO = 'P' AND SZPRD.TIPOITEM IN ('E', 'A') AND (SZ17.CODTABMATMED = '17' OR SZ17.CODTABMATMED IS NULL) AND (SZ12.CODTABMATMED = '12' OR SZ12.CODTABMATMED IS NULL) ORDER BY CODIGOPRD