Perguntas select

Mais
8 anos 6 meses atrás #29333 por busodaniel
select foi criado por busodaniel
Srs.
Boa noite tudo bem?
Estou com a seguinte duvidas em uma select.
Quero fazer uma select onde vou utilizar as tabelas sd3, sc2 e sd4, como mostra a select abaixo.
Como eu faco a seguinte somatoria.
O primeiro qt_prod (sd3.d3_quant) ele vai somar se o d3_cf = PR0.
O seguindo qt_prod (sd3.d3_quant) ele vai somar se o d3_cf = RE0 e RE1.

Alguem pode me ajudar com esta select.
Grato



SELECT D3_OP OP,
C2_PRODUTO PRODUTO_OP,
B11.B1_DESC DESCRICAO_OP,
SUM(D3_QUANT) QT_PROD,
B11.B1_TIPO TP_OP,
B11.B1_UM UM_OP,
D3_COD COD_PROD,
B10.B1_DESC DESCRICAO,
D3_TIPO TP_PROD,
D3_UM UNID_MED,
SUM(D3_QUANT) QT_REQ,
D4_QTDEORI QT_EMP_ORI,
D4_QTDEORI / C2_QUANT EMP_PROP
FROM SD3010
INNER JOIN SB1010 B10
ON B10.B1_FILIAL = D3_FILIAL
AND B10.B1_COD = D3_COD
AND B10.D_E_L_E_T_ = SD3010.D_E_L_E_T_
LEFT JOIN SC2010
ON D3_FILIAL = C2_FILIAL
AND D3_OP = C2_NUM+C2_ITEM+C2_SEQUEN+C2_ITEMGRD
AND SD3010.D_E_L_E_T_ = SC2010.D_E_L_E_T_
LEFT JOIN SB1010 B11
ON B11.B1_FILIAL = C2_FILIAL
AND B11.B1_COD = C2_PRODUTO
AND B11.D_E_L_E_T_ = SC2010.D_E_L_E_T_
LEFT JOIN SD4010
ON D4_FILIAL = D3_FILIAL
AND D4_OP = D3_OP
AND D4_COD = D3_COD
AND D4_LOCAL = D3_LOCAL
AND SD4010.D_E_L_E_T_ = SD3010.D_E_L_E_T_
WHERE D3_FILIAL = '01'
AND D3_EMISSAO BETWEEN '20150701' AND '20150731'
AND D3_CF IN ('RE0','RE1')
AND D3_ESTORNO = ''
AND SD3010.D_E_L_E_T_ = ''
AND D3_OP = '02228302002'
GROUP BY D3_OP, D3_COD, D3_TIPO, D3_UM, B11.B1_DESC, B10.B1_DESC, C2_PRODUTO, C2_QUANT, D4_QTDEORI, B11.B1_TIPO, B11.B1_UM, C2_QUJE, D3_CF
ORDER BY D3_OP, D3_COD

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 6 meses atrás #29335 por kanaamlrr
Respondido por kanaamlrr no tópico select
Segue abaixo.
Não cheguei a testar, mas deve funcionar...
Parti da premissa que os joins já estão corretos
Abraços!!
SELECT D3_OP	OP,
C2_PRODUTO	PRODUTO_OP,
B11.B1_DESC	DESCRICAO_OP,
SUM(CASE WHEN D3_CF = 'PR0' THEN D3_QUANT ELSE 0 END) QT_PROD,
B11.B1_TIPO	TP_OP,
B11.B1_UM	UM_OP,
D3_COD	COD_PROD,
B10.B1_DESC	DESCRICAO,
D3_TIPO	TP_PROD,
D3_UM	UNID_MED,
SUM(CASE WHEN D3_CF = 'RE0' OR D3_CF = 'RE1' THEN D3_QUANT ELSE 0 END)	QT_REQ,
D4_QTDEORI QT_EMP_ORI,
D4_QTDEORI / C2_QUANT EMP_PROP
FROM SD3010
INNER JOIN SB1010 B10
ON B10.B1_FILIAL	= D3_FILIAL
AND B10.B1_COD	= D3_COD
AND B10.D_E_L_E_T_	= SD3010.D_E_L_E_T_
LEFT JOIN SC2010
ON D3_FILIAL	= C2_FILIAL
AND D3_OP	= C2_NUM+C2_ITEM+C2_SEQUEN+C2_ITEMGRD
AND SD3010.D_E_L_E_T_	= SC2010.D_E_L_E_T_
LEFT JOIN SB1010 B11
ON B11.B1_FILIAL	= C2_FILIAL
AND B11.B1_COD	= C2_PRODUTO
AND B11.D_E_L_E_T_	= SC2010.D_E_L_E_T_
LEFT JOIN SD4010
ON D4_FILIAL	= D3_FILIAL
AND D4_OP	= D3_OP
AND D4_COD	= D3_COD
AND D4_LOCAL	= D3_LOCAL
AND SD4010.D_E_L_E_T_	= SD3010.D_E_L_E_T_
WHERE D3_FILIAL = '01'
AND D3_EMISSAO BETWEEN '20150701' AND '20150731'
AND D3_CF IN ('RE0','RE1')
AND D3_ESTORNO = ''
AND SD3010.D_E_L_E_T_ = ''
AND D3_OP = '02228302002'
GROUP BY D3_OP, D3_COD, D3_TIPO, D3_UM, B11.B1_DESC, B10.B1_DESC, C2_PRODUTO, C2_QUANT, D4_QTDEORI, B11.B1_TIPO, B11.B1_UM, C2_QUJE, D3_CF
ORDER BY D3_OP, D3_COD

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 6 meses atrás #29336 por busodaniel
Respondido por busodaniel no tópico select
Perfeito, muito obrigado pela atenção.

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.111 segundos
Joomla templates by a4joomla