Dúvida com Query

Senhores Boa Noite,

Montei uma query um pouco extensa, que segue anexo, minha dúvida é a seguinte ela está gerando duas linhas no resultado uma com a descrição do F4_DUPLIC como PEDIDO e a outra coluna vem em branco devido a condição que coloquei nesse trecho:

CASE(F4_DUPLIC)WHEN 'S' THEN 'PEDIDO' WHEN 'N' THEN 'BONIFICACAO' ELSE '' END AS F4_DUPLIC

A questão é, queria que as duas linhas virassem uma só e não estou conseguindo, poderiam me ajudar?

Valeu.

:warning: Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.

Bom dia,

Acho que entendi o que deseja fazer e acredito que seja possível sem utilizar union e subquerys, veja:


SELECT 
 A1_COD, A1_NOME,
 CK_NUM AS N_ORC,SUM(CK_QTDVEN * CK_PRUNIT) AS VLR_ORC,
 D2_PEDIDO AS PEDIDO,
 SUM(SC6.C6_QTDVEN * SC6.C6_PRUNIT) AS VLR_PEDIDO, 
 SUM(SC6R.C6_QTDVEN * SC6R.C6_PRUNIT) AS VLR_RESIDUO,
 SUM(D2_TOTAL) AS VLR_FATDESC, SUM(D2_QUANT * D2_PRUNIT) AS VLR_FATBRU, 

                                    CASE(SF4.F4_DUPLIC)
                                    WHEN 'S' THEN 'PEDIDO'
                                    WHEN 'N' THEN 'BONIFICACAO'
                                    ELSE ''
                                    END AS F4_DUPLIC,
                                    CASE(SF4R.F4_DUPLIC)
                                    WHEN 'S' THEN 'PEDIDO'
                                    WHEN 'N' THEN 'BONIFICACAO'
                                    ELSE ''
                                    END AS F4_DUPLICR

FROM SD2010 
Inner join SA1010 SA1 ON A1_COD = D2_CLIENTE AND  SA1.D_E_L_E_T_='' AND A1_LOJA = D2_LOJA 
INNER JOIN SC6010 SC6 ON C6_NUM = D2_PEDIDO AND SC6.D_E_L_E_T_='' AND SC6.C6_PRODUTO = D2_COD AND C6_FILIAL = '010103'
INNER JOIN SF4010 SF4 ON SC6.C6_TES = SF4.F4_CODIGO AND SF4.D_E_L_E_T_ ='' AND  SF4.F4_FILIAL = '010103'
LEFT JOIN SC6010 SC6R ON SC6R.C6_NUM = D2_PEDIDO AND SC6R.D_E_L_E_T_='' AND SC6R.C6_BLQ = 'R' AND SC6R.C6_FILIAL ='010103'
LEFT JOIN SF4010 SF4R ON SC6R.C6_TES = SF4R.F4_CODIGO AND SF4R.D_E_L_E_T_ = '' AND SF4R.F4_FILIAL = '010103'
LEFT JOIN SCK010 SCK ON CK_NUMPV = SC6.C6_NUM AND SCK.D_E_L_E_T_ =''

WHERE SD2010.D_E_L_E_T_=''
AND D2_PEDIDO = '000111'
AND D2_FILIAL = '010103'
GROUP BY  A1_COD, A1_NOME,
SF4.F4_DUPLIC,
SF4R.F4_DUPLIC,
CK_NUM,
D2_PEDIDO

Neste exemplo usei LEFT no orçamento para testar, pois não tenho orçamentos na minha base de dados, os itens de pedidos com resíduos coloquei numa coluna própria, e tratei com Left para casos não tenha resíduos no pedido, aí só recomendo acertar as filiais e o posicionamento que deseja e tratar os null para zero ou vazio.

Douglas Bom Dia,

Entendi perfeitamente o que você fez e agradeço muito, vou tentar ajustar aqui na minha base e volto com o resultado.