none
Select retornar campo de acordo com condição RRS feed

  • Pergunta

  • Pessoal, boa tarde. Tenho a query abaixo, mas precisava implementar o seguinte. 

    Caso SUBSTRING(C7_PRODUTO,1,2) IN ('MP','EM), então, retorna o conteúdo do campo B5_CEME,

    Caso SUBSTRING(C7_PRODUTO,1,2) NOT IN('MP','EM') e o campo C7_DESCRI não for vazio, retorna o conteúdo do campo C7_DESCRI, caso C7_DESCRI for vazio, retorna o conteúdo do campo B1_DESC. Alguém tem uma luz de como posso fazer?

    SELECT 
    SC7.*, SA2.*,convert(varchar,(convert(datetime,C7_EMISSAO)),103) Emissao,
    convert(varchar,(convert(datetime,C7_DATPRF)),103) DtEntrega, B1_DESC, E4_DESCRI,RTRIM(Y1_NOME) Y1_NOME,
    CASE
         WHEN C7_TPFRETE = 'C' THEN 'CIF'
         WHEN C7_TPFRETE = 'F' THEN 'FOB'
    End C7_TPFRETE,
    CASE
         WHEN C7_CONAPRO = 'L' THEN 'PEDIDO APROVADO ELETRONICAMENTE'
         WHEN C7_CONAPRO = 'B' THEN 'PEDIDO BLOQUEADO'
    End C7_CONAPRO, RTRIM(AK_NOME) AK_NOME
    from SC7010 SC7(NOLOCK), SA2010 SA2(NOLOCK), SB1010 SB1(NOLOCK), SB5010 SB5(NOLOCK),
    SE4010 SE4(NOLOCK), SAL010 SAL(NOLOCK), SAK010 SAK(NOLOCK), SY1010 SY1(NOLOCK)
    where SC7.C7_FILIAL = SA2.A2_FILIAL
    and SC7.C7_FILIAL = SB1.B1_FILIAL
    and SE4.D_E_L_E_T_ = ''
    and SC7.D_E_L_E_T_ = ''
    and SA2.D_E_L_E_T_ = ''
    and SB1.D_E_L_E_T_ = ''
    and SAL.D_E_L_E_T_ = ''
    and SAK.D_E_L_E_T_ = ''
    and SY1.D_E_L_E_T_ = ''
    and SB5.D_E_L_E_T_ = ''
    and C7_FILIAL = B5_FILIAL
    and C7_PRODUTO = B5_COD
    and C7_FILIAL = E4_FILIAL
    and C7_COND = E4_CODIGO
    and SC7.C7_FORNECE = SA2.A2_COD
    and SC7.C7_LOJA = SA2.A2_LOJA
    and SC7.C7_PRODUTO = SB1.B1_COD
    and SC7.C7_APROV = SAL.AL_COD
    and SAL.AL_APROV = SAK.AK_COD
    and SC7.C7_USER = SY1.Y1_USER
    and SC7.C7_NUM BETWEEN '030656' AND '030656'
    order by C7_ITEM

    quinta-feira, 29 de abril de 2021 16:54

Respostas

  • Boa tarde,

    Segue uma sugestão para testes considerando que a coluna C7_DESCRI vazia seria nula:

    case when SUBSTRING(C7_PRODUTO,1,2) IN ('MP','EM')
        then B5_CEME
        else coalesce(C7_DESCRI, B1_DESC)
    end

    E uma outra sugestão considerando que a coluna C7_DESCRI vazia seria nula ou "em branco":

    case when SUBSTRING(C7_PRODUTO,1,2) IN ('MP','EM')
        then B5_CEME
        else 
            case when C7_DESCRI is null or C7_DESCRI = '' 
                then B1_DESC
                else C7_DESCRI
            end
    end

    Espero que ajude


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


    • Editado gapimex quinta-feira, 29 de abril de 2021 18:55
    • Marcado como Resposta Luis Nagasako quinta-feira, 29 de abril de 2021 19:29
    quinta-feira, 29 de abril de 2021 18:54

Todas as Respostas

  • Boa tarde,

    Segue uma sugestão para testes considerando que a coluna C7_DESCRI vazia seria nula:

    case when SUBSTRING(C7_PRODUTO,1,2) IN ('MP','EM')
        then B5_CEME
        else coalesce(C7_DESCRI, B1_DESC)
    end

    E uma outra sugestão considerando que a coluna C7_DESCRI vazia seria nula ou "em branco":

    case when SUBSTRING(C7_PRODUTO,1,2) IN ('MP','EM')
        then B5_CEME
        else 
            case when C7_DESCRI is null or C7_DESCRI = '' 
                then B1_DESC
                else C7_DESCRI
            end
    end

    Espero que ajude


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


    • Editado gapimex quinta-feira, 29 de abril de 2021 18:55
    • Marcado como Resposta Luis Nagasako quinta-feira, 29 de abril de 2021 19:29
    quinta-feira, 29 de abril de 2021 18:54
  • Muito obrigado meu amigo! Resolveu o problema que eu precisava!! 
    quinta-feira, 29 de abril de 2021 19:29