none
Pegando o resultado de um de um campo de select e gerando outro select RRS feed

  • Pergunta

  • Bom dia.

    Preciso criar uma procedure que faça o seguinte.

    Tenho so 1º select que esta abaixo

    SELECT DISTINCT
    SD2.D2_DOC            AS NOTA,
    CONCAT(RTRIM(SD2.D2_CLIENTE), ' - ', SA1.A1_NOME)        AS CLIENTE,
    SD2.D2_COD              AS CODPRODUTO,
    SB1.B1_DESC             AS DESCPRODUTO,
    SB1.B1_X_ESPEC                                           AS NQUIMICO,
    SC2.C2_XLOTEF         AS FORLOTE,
    SC2.C2_XNPAIS         AS PAIS,
    SC2.C2_XNOMFA         AS FABRICANTE,
    CONVERT(VARCHAR(10), CAST(SC2.C2_XDTFAB AS DATE),103)    AS FABRICAÇÃO,
    CONVERT(VARCHAR(20), CAST(SC2.C2_XDTVALI AS DATE),103)   AS VALIDADE,
    SB1.B1_XDCB           AS DCB,
    SB1.B1_XDCI           AS DCI,
    SB1.B1_XCAS           AS CAS,
    SD2.D2_LOTECTL        AS LOTE,
    QE6.QE6_XMANUS        AS MANUSEIO,
    QE6.QE6_XDERRA        AS DERRAMAMENTO,
    QE6.QE6_XTRATA        AS TRATAMENTO,
    QEK.QEK_CERQUA        AS NLAUDO,
    QEK_REVI              AS REVISÃO
    FROM SD2020 AS SD2
    INNER JOIN SA1020 AS SA1 WITH(NOLOCK) ON SA1.A1_COD = SD2.D2_CLIENTE
    INNER JOIN SB1020 AS SB1 WITH(NOLOCK) ON SB1.B1_COD = SD2.D2_COD
    INNER JOIN SC2020 AS SC2 WITH(NOLOCK) ON SC2.C2_XLOTE = SD2.D2_LOTECTL
    INNER JOIN QEK020 AS QEK WITH(NOLOCK) ON QEK.QEK_XORDEM = SC2.C2_NUM
    INNER JOIN QE6020 AS QE6 WITH(NOLOCK) ON QE6.QE6_PRODUT = QEK.QEK_PRODUT
    WHERE SD2.D2_DOC = '244788'
    AND SA1.D_E_L_E_T_ = '' AND SB1.D_E_L_E_T_ = '' AND SD2.D_E_L_E_T_ = '' AND QEK.D_E_L_E_T_ = '' AND QE6.D_E_L_E_T_ = ''

    Com este select acima tenho o resultado abaixo

    CODPRODUTO    REVISÃO
    000878             02
    005195             05
    005883             04
    006345             01
    006877             01

    Agora tenho o 2º select que precisa da informação destes dois campos gerado no 1º select.

    SELECT
    QE1.QE1_DESCPO    AS CARACTERISTICAS,
    QE8.QE8_TEXTO     AS ESPECIFICAÇÕES,
    QE8.QE8_METODO    AS METODO
     FROM QE8020 AS QE8
     INNER JOIN QE1010 AS QE1 WITH(NOLOCK) ON QE1.QE1_ENSAIO = QE8.QE8_ENSAIO
     WHERE QE8.QE8_PRODUT = '000878' AND QE8.QE8_REVI = '02'
    ORDER BY QE8_SEQLAB

    Como posso desenvolver uma procedure que faça este procedimento, e no final forme uma única consulta.

    Desde já agradeço.


    JUNIOR GUERREIRO T.I

    quinta-feira, 14 de junho de 2018 15:21

Respostas

Todas as Respostas

  • Deleted
    quinta-feira, 14 de junho de 2018 16:14
  • Boa tarde José..e obrigado pela atenção

    Então José preciso o resultado da segunda consulta conforme as linhas da primeira consulta. Ex leio a primeira linha gero a segundo consulta da primeira linha da primeira consulta, leio a segunda linha da primeira consulta e gero o segundo select da segunda consulta e assim por diante.

    Ou também não sei se e possível, fazer com que o segundo select seja uma coluna do primeiro select.


    JUNIOR GUERREIRO T.I



    quinta-feira, 14 de junho de 2018 16:32
  • José e isso mesmo que eu precisava, mas tenho outra duvida, seu eu precisar colocar um terceiro select, sendo alimentado por uma coluna do primeiro select é possível, se sim como eu faria isso de tiver que colocar o terceiro select abaixo, agora sendo alimentado pela coluna LOTE do primeiro select.

    SELECT
    QER_LOTE,
    QER_REVI,
    QEQ.QEQ_MEDICA   AS RESULTADO
     FROM QER020 AS QER
     INNER JOIN QEQ020 AS QEQ WITH(NOLOCK) ON QEQ.QEQ_CODMED = QER.QER_CHAVE
     WHERE QER.QER_LOTE = 'PS-010435/F01'


    JUNIOR GUERREIRO T.I

    quinta-feira, 14 de junho de 2018 17:27
  • Estou tentando colocar uma terceira consulta mas esta dando erro. como mostro abaixo, o terceiro select não entra no mesmo select que os dois primeiros.

    WITH CONSULTA1 AS (
    SELECT DISTINCT
    SD2.D2_DOC            AS NOTA,
    CONCAT(RTRIM(SD2.D2_CLIENTE), ' - ', SA1.A1_NOME)        AS CLIENTE,
    SD2.D2_COD              AS CODPRODUTO,
    QEK_REVI                AS REVISAO,
    SB1.B1_DESC             AS DESCPRODUTO,
    SB1.B1_X_ESPEC                                           AS NQUIMICO,
    SC2.C2_XLOTEF         AS FORLOTE,
    SC2.C2_XNPAIS         AS PAIS,
    SC2.C2_XNOMFA         AS FABRICANTE,
    CONVERT(VARCHAR(10), CAST(SC2.C2_XDTFAB AS DATE),103)    AS FABRICAÇÃO,
    CONVERT(VARCHAR(20), CAST(SC2.C2_XDTVALI AS DATE),103)   AS VALIDADE,
    SB1.B1_XDCB           AS DCB,
    SB1.B1_XDCI           AS DCI,
    SB1.B1_XCAS           AS CAS,
    SD2.D2_LOTECTL        AS LOTE,
    QE6.QE6_XMANUS        AS MANUSEIO,
    QE6.QE6_XDERRA        AS DERRAMAMENTO,
    QE6.QE6_XTRATA        AS TRATAMENTO,
    QEK.QEK_CERQUA        AS NLAUDO
    FROM SD2020 AS SD2
    INNER JOIN SA1020 AS SA1 WITH(NOLOCK) ON SA1.A1_COD = SD2.D2_CLIENTE
    INNER JOIN SB1020 AS SB1 WITH(NOLOCK) ON SB1.B1_COD = SD2.D2_COD
    INNER JOIN SC2020 AS SC2 WITH(NOLOCK) ON SC2.C2_XLOTE = SD2.D2_LOTECTL
    INNER JOIN QEK020 AS QEK WITH(NOLOCK) ON QEK.QEK_XORDEM = SC2.C2_NUM
    INNER JOIN QE6020 AS QE6 WITH(NOLOCK) ON QE6.QE6_PRODUT = QEK.QEK_PRODUT
    WHERE SD2.D2_DOC = '244788'
    AND SA1.D_E_L_E_T_ = '' AND SB1.D_E_L_E_T_ = '' AND SD2.D_E_L_E_T_ = '' AND QEK.D_E_L_E_T_ = '' AND QE6.D_E_L_E_T_ = ''
    )
    SELECT
    --C1.NOTA,
    --C1.CLIENTE,
    --C1.CODPRODUTO,
    --C1.DESCPRODUTO,
    --C1.NQUIMICO,
    --C1.LOTE,
    --C1.FORLOTE,C1.FABRICAÇÃO,
    --C1.VALIDADE,
    --C1.FABRICANTE,
    --C1.PAIS,
    --C1.REVISAO,
    QE8.QE8_SEQLAB     AS SEQUENCIA,
    QE1.QE1_DESCPO     AS CARACTERISTICAS,
    QE8.QE8_TEXTO      AS ESPECIFICACOES,
    QE8.QE8_METODO     AS METODO
    FROM CONSULTA1 AS C1
    INNER JOIN QE8020 AS QE8 WITH(NOLOCK) ON QE8.QE8_PRODUT = C1.CODPRODUTO AND QE8.QE8_REVI = C1.REVISAO
    INNER JOIN QE1010 AS QE1 WITH(NOLOCK) ON QE1.QE1_ENSAIO = QE8.QE8_ENSAIO
    SELECT
    QER_LOTE,
    QER_REVI,
    QEQ.QEQ_MEDICA   AS RESULTADO
     FROM CONSULTA1 AS C1
     INNER JOIN QER020 AS QER WITH(NOLOCK) ON QER.QER_LOTE = C1.LOTE
     INNER JOIN QEQ020 AS QEQ WITH(NOLOCK) ON QEQ.QEQ_CODMED = QER.QER_CHAVE;


    JUNIOR GUERREIRO T.I


    quinta-feira, 14 de junho de 2018 19:47