Perguntas select
- busodaniel
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 57
- Obrigados Recebidos: 0
9 anos 1 mês 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
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.
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
9 anos 1 mês atrás #29335
por kanaamlrr
Segue abaixo.
Não cheguei a testar, mas deve funcionar...
Parti da premissa que os joins já estão corretos
Abraços!!
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.
- busodaniel
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 57
- Obrigados Recebidos: 0
9 anos 1 mês 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.097 segundos