×
Linguagem de Programação ADVPL
Perguntas Ajuda com query
- ftvernier
- Autor do Tópico
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 386
- Obrigados Recebidos: 2
11 anos 2 semanas atrás - 11 anos 2 semanas atrás #18220
por ftvernier
Ajuda com query foi criado por ftvernier
Fala Galera Blz?
Estou montando uma declaração de faturamento e na hora da query filtrar na SD2 estou errando em algum ponto poderiam me dar uma luz?
Valeu
cQuery := " SELECT "+CRLF
cQuery += " D2_DOC,D2_QUANT,D2_EMISSAO,D2_TOTAL"+CRLF
cQuery += " FROM " +RetSqlName("SD2")CRLF
cQuery += " SUM(D2_QUANT)"+CRLF
cQuery += " SUM(D2_TOTAL)"+CRLF
cQuery += " WHERE "+CRLF
cQuery += " D2_EMISSAO>= '"+Dtos(dDat)+"'"+CRLF
cQuery += " AND D2_EMISSAO<= '"+Dtos(dDat2)+"'"+CRLF
cQuery += " AND D2_CF IN ('5101','5102','5124','5125','6101','6102','6109','6124')"+CRLF
cQuery += " AND D2.D_E_L_E_T_='' "+CRLF
cQuery += " ORDER BY D2_EMISSAO,D2_DOC "+CRLF
Estou montando uma declaração de faturamento e na hora da query filtrar na SD2 estou errando em algum ponto poderiam me dar uma luz?
Valeu
cQuery := " SELECT "+CRLF
cQuery += " D2_DOC,D2_QUANT,D2_EMISSAO,D2_TOTAL"+CRLF
cQuery += " FROM " +RetSqlName("SD2")CRLF
cQuery += " SUM(D2_QUANT)"+CRLF
cQuery += " SUM(D2_TOTAL)"+CRLF
cQuery += " WHERE "+CRLF
cQuery += " D2_EMISSAO>= '"+Dtos(dDat)+"'"+CRLF
cQuery += " AND D2_EMISSAO<= '"+Dtos(dDat2)+"'"+CRLF
cQuery += " AND D2_CF IN ('5101','5102','5124','5125','6101','6102','6109','6124')"+CRLF
cQuery += " AND D2.D_E_L_E_T_='' "+CRLF
cQuery += " ORDER BY D2_EMISSAO,D2_DOC "+CRLF
Ultima edição: 11 anos 2 semanas atrás por ftvernier.
Por favor Acessar ou Registrar para participar da conversa.
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
11 anos 2 semanas atrás #18221
por kanaamlrr
Respondido por kanaamlrr no tópico Ajuda com query
tenta assim:
cQuery := " SELECT "+CRLF
cQuery += " D2_DOC,D2_QUANT,D2_EMISSAO,D2_TOTAL"+CRLF
cQuery += " SUM(D2_QUANT)"+CRLF
cQuery += " SUM(D2_TOTAL)"+CRLF
cQuery += " FROM " +RetSqlName("SD2")+CRLF
cQuery += " WHERE "+CRLF
cQuery += " D2_EMISSAO>= '"+Dtos(dDat)+"'"+CRLF
cQuery += " AND D2_EMISSAO<= '"+Dtos(dDat2)+"'"+CRLF
cQuery += " AND D2_CF IN ('5101','5102','5124','5125','6101','6102','6109','6124')"+CRLF
cQuery += " AND D2.D_E_L_E_T_='' "+CRLF
cQuery += " ORDER BY D2_EMISSAO,D2_DOC "+CRLF
cQuery := " SELECT "+CRLF
cQuery += " D2_DOC,D2_QUANT,D2_EMISSAO,D2_TOTAL"+CRLF
cQuery += " SUM(D2_QUANT)"+CRLF
cQuery += " SUM(D2_TOTAL)"+CRLF
cQuery += " FROM " +RetSqlName("SD2")+CRLF
cQuery += " WHERE "+CRLF
cQuery += " D2_EMISSAO>= '"+Dtos(dDat)+"'"+CRLF
cQuery += " AND D2_EMISSAO<= '"+Dtos(dDat2)+"'"+CRLF
cQuery += " AND D2_CF IN ('5101','5102','5124','5125','6101','6102','6109','6124')"+CRLF
cQuery += " AND D2.D_E_L_E_T_='' "+CRLF
cQuery += " ORDER BY D2_EMISSAO,D2_DOC "+CRLF
Por favor Acessar ou Registrar para participar da conversa.
- ftvernier
- Autor do Tópico
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 386
- Obrigados Recebidos: 2
11 anos 2 semanas atrás #18222
por ftvernier
Respondido por ftvernier no tópico Ajuda com query
Kanaãm Blz Brother?
Infelizmente não rolou deu erro:
HREAD ERROR (fernando.vernier, FERNANDO-PC) 04/11/2013 15:12:54
: Error : 102 (37000) (RC=-1) - [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near 'D2_QUANT'. ( From tMSSQLConnection::GetQueryFile )
Abraços.
Infelizmente não rolou deu erro:
HREAD ERROR (fernando.vernier, FERNANDO-PC) 04/11/2013 15:12:54
: Error : 102 (37000) (RC=-1) - [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near 'D2_QUANT'. ( From tMSSQLConnection::GetQueryFile )
Abraços.
Por favor Acessar ou Registrar para participar da conversa.
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
11 anos 2 semanas atrás #18223
por kanaamlrr
Respondido por kanaamlrr no tópico Ajuda com query
Certo.
Vi uma coisa estranha nessa consulta.
Você está tentando agrupar por quais campos?
Se você remover o SUM ele deve funcionar.
O problema é que para você realizar um SUM utilizando os campos que você quer, você teria que mudar para a query abaixo:
Vi uma coisa estranha nessa consulta.
Você está tentando agrupar por quais campos?
cQuery := " SELECT "
cQuery += " D2_DOC,D2_QUANT,D2_EMISSAO,D2_TOTAL "
//cQuery += " SUM(D2_QUANT)"
//cQuery += " SUM(D2_TOTAL)"
cQuery += " FROM " +RetSqlName("SD2")
cQuery += " WHERE "
cQuery += " D2_EMISSAO>= '"+Dtos(dDat)+"'"
cQuery += " AND D2_EMISSAO<= '"+Dtos(dDat2)+"'"
cQuery += " AND D2_CF IN ('5101','5102','5124','5125','6101','6102','6109','6124')"
cQuery += " AND D2.D_E_L_E_T_='' "
cQuery += " ORDER BY D2_EMISSAO,D2_DOC "
Se você remover o SUM ele deve funcionar.
O problema é que para você realizar um SUM utilizando os campos que você quer, você teria que mudar para a query abaixo:
cQuery := " SELECT "
cQuery += " D2_DOC,SUM(D2_QUANT),D2_EMISSAO,SUM(D2_TOTAL) "
cQuery += " FROM " +RetSqlName("SD2")
cQuery += " WHERE "
cQuery += " D2_EMISSAO>= '"+Dtos(dDat)+"'"
cQuery += " AND D2_EMISSAO<= '"+Dtos(dDat2)+"'"
cQuery += " AND D2_CF IN ('5101','5102','5124','5125','6101','6102','6109','6124')"
cQuery += " AND D2.D_E_L_E_T_='' "
cQuery += " GROUP BY D2_EMISSAO,D2_DOC "
cQuery += " ORDER BY D2_EMISSAO,D2_DOC "
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
11 anos 2 semanas atrás #18224
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico Ajuda com query
cQuery := " SELECT "+CRLF
cQuery += " D2_EMISSAO, D2_DOC, "+CRLF
cQuery += " SUM(D2_QUANT), "+CRLF
cQuery += " SUM(D2_TOTAL)"+CRLF
cQuery += " FROM " +RetSqlName("SD2")+CRLF
cQuery += " WHERE "+CRLF
cQuery += " D2_EMISSAO>= '"+Dtos(dDat)+"'"+CRLF
cQuery += " AND D2_EMISSAO<= '"+Dtos(dDat2)+"'"+CRLF
cQuery += " AND D2_CF IN ('5101','5102','5124','5125','6101','6102','6109','6124')"+CRLF
cQuery += " AND D2.D_E_L_E_T_='' "+CRLF
cQuery += " GROUP BY D2_EMISSAO,D2_DOC "+CRLF
cQuery += " ORDER BY D2_EMISSAO,D2_DOC "+CRLF
cQuery += " D2_EMISSAO, D2_DOC, "+CRLF
cQuery += " SUM(D2_QUANT), "+CRLF
cQuery += " SUM(D2_TOTAL)"+CRLF
cQuery += " FROM " +RetSqlName("SD2")+CRLF
cQuery += " WHERE "+CRLF
cQuery += " D2_EMISSAO>= '"+Dtos(dDat)+"'"+CRLF
cQuery += " AND D2_EMISSAO<= '"+Dtos(dDat2)+"'"+CRLF
cQuery += " AND D2_CF IN ('5101','5102','5124','5125','6101','6102','6109','6124')"+CRLF
cQuery += " AND D2.D_E_L_E_T_='' "+CRLF
cQuery += " GROUP BY D2_EMISSAO,D2_DOC "+CRLF
cQuery += " ORDER BY D2_EMISSAO,D2_DOC "+CRLF
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Por favor Acessar ou Registrar para participar da conversa.
- ftvernier
- Autor do Tópico
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 386
- Obrigados Recebidos: 2
11 anos 2 semanas atrás #18225
por ftvernier
Respondido por ftvernier no tópico Ajuda com query
Kanaãm,
Eu tinha uma outra query que montei que me trás o quanto foi faturado mensalmente por determinado CFOP:
SELECT B1.B1_COD CODIGO,
B1.B1_DESC DESCRICAO,
B1.B1_UM MEDIDA,
B1.B1_POSIPI NCM,
SD2.D2_CF CFOP,
SUM(SD2.D2_QUANT) QTD_TOTAL,
SUM(SD2.D2_TOTAL) VLR_TOTAL
FROM SD2010 AS SD2 WITH (NOLOCK)
INNER JOIN SB1010 AS B1 WITH (NOLOCK)
ON B1.B1_COD = SD2.D2_COD
INNER JOIN SF4010 SF4 WITH (NOLOCK)
ON SF4.F4_CODIGO = SD2.D2_TES
WHERE SD2.D_E_L_E_T_ <> '*'
AND SF4.D_E_L_E_T_ <> '*'
AND SF4.F4_DUPLIC = 'S'
AND SD2.D2_TIPO = 'N'
AND SD2.D2_EMISSAO BETWEEN '20130101' AND '20130131'
AND B1.D_E_L_E_T_ <> '*'
GROUP BY B1.B1_COD,
B1.B1_DESC,
B1.B1_UM,
B1.B1_POSIPI,
SD2.D2_CF
ORDER BY B1.B1_COD
Eu estava tentando montar essa mesma query mas somente com dados da SD2 nessa outra query para me trazer só os valores referente ao faturamento.
Vou testar com a sua query.
Obrigado.
Eu tinha uma outra query que montei que me trás o quanto foi faturado mensalmente por determinado CFOP:
SELECT B1.B1_COD CODIGO,
B1.B1_DESC DESCRICAO,
B1.B1_UM MEDIDA,
B1.B1_POSIPI NCM,
SD2.D2_CF CFOP,
SUM(SD2.D2_QUANT) QTD_TOTAL,
SUM(SD2.D2_TOTAL) VLR_TOTAL
FROM SD2010 AS SD2 WITH (NOLOCK)
INNER JOIN SB1010 AS B1 WITH (NOLOCK)
ON B1.B1_COD = SD2.D2_COD
INNER JOIN SF4010 SF4 WITH (NOLOCK)
ON SF4.F4_CODIGO = SD2.D2_TES
WHERE SD2.D_E_L_E_T_ <> '*'
AND SF4.D_E_L_E_T_ <> '*'
AND SF4.F4_DUPLIC = 'S'
AND SD2.D2_TIPO = 'N'
AND SD2.D2_EMISSAO BETWEEN '20130101' AND '20130131'
AND B1.D_E_L_E_T_ <> '*'
GROUP BY B1.B1_COD,
B1.B1_DESC,
B1.B1_UM,
B1.B1_POSIPI,
SD2.D2_CF
ORDER BY B1.B1_COD
Eu estava tentando montar essa mesma query mas somente com dados da SD2 nessa outra query para me trazer só os valores referente ao faturamento.
Vou testar com a sua query.
Obrigado.
Por favor Acessar ou Registrar para participar da conversa.
Tempo para a criação da página:0.127 segundos