none
Retorno de select por colunas RRS feed

  • 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
    quarta-feira, 7 de junho de 2017 13:00

Respostas

Todas as Respostas

  • Bom dia,

    Artur, as colunas abaixo pertencem a qual tabela?

    CODMATMED
    CODTABMATMED
    INATIVO
    TIPO
    TIPOITEM


    Assinatura: http://www.imoveisemexposicao.com.br

    quarta-feira, 7 de junho de 2017 13:28
  • Boa tarde, a relação é a seguinte:

    TPRODUTO.INATIVO
    TPRODUTO.TIPO
    SZPRD.TIPOITEM
    SZITEMESTQPRECO.CODTABMATMED

    Obs.: Na descrição eu havia trocado CODTABMATMED, que é o correto, por CODMATMED.  

    quarta-feira, 7 de junho de 2017 16:59
  • 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

    quarta-feira, 7 de junho de 2017 18:41
  • 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?

    quarta-feira, 7 de junho de 2017 20:18
  • 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

    quarta-feira, 7 de junho de 2017 20:44
  • Quase isso, só eu preciso que nas colunas onde está retornando o número do SZITEMESTQPRECO.CODTABMATMED (17 e 12), me retorne o SZITEMESTQPRECO.PRECO para cada um dos códigos da tabela (17 e 12).  É possível?

    quinta-feira, 8 de junho de 2017 11:25
  • 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
    quinta-feira, 8 de junho de 2017 12:20
  • 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

    quinta-feira, 8 de junho de 2017 13:19