Perguntas query para somar um campo texto

Mais
8 anos 8 meses atrás - 8 anos 8 meses atrás #29025 por kanaamlrr
Respondido por kanaamlrr no tópico query para somar um campo texto
Tenta assim!
Abraço!
WITH ValList AS(
        SELECT  E4_CODIGO,
                CAST(LEFT(RTRIM(E4_COND),CASE WHEN PATINDEX('%,%', RTRIM(E4_COND)) = 0 THEN 50 ELSE PATINDEX('%,%', RTRIM(E4_COND)) - 1 END) AS FLOAT) Val,
                RIGHT(RTRIM(E4_COND),LEN(RTRIM(E4_COND)) - PATINDEX('%,%', RTRIM(E4_COND))) Remainder--, RTRIM(E4_COND), LEN(RTRIM(E4_COND)), PATINDEX('%,%', RTRIM(E4_COND)), RIGHT(RTRIM(E4_COND),5)
        FROM    SE4010 --WHERE RTRIM(E4_COND) LIKE '%,%'
        UNION ALL
        SELECT  E4_CODIGO,
                CAST(LEFT(Remainder,CASE WHEN PATINDEX('%,%', Remainder) = 0 THEN LEN(Remainder) ELSE PATINDEX('%,%', Remainder) - 1 END) AS FLOAT) Val,
                RIGHT(Remainder,CASE WHEN PATINDEX('%,%', Remainder) = 0 THEN 0 ELSE LEN(Remainder) - PATINDEX('%,%', Remainder) END) Remainder
        FROM    ValList
        WHERE   LEN(Remainder) > 0

)
SELECT  E4_CODIGO,
        SUM(Val)
FROM    ValList
GROUP BY E4_CODIGO

Depois para gravar em uma tabela o resultado você só vai precisar fazer um join.
Ultima edição: 8 anos 8 meses atrás por kanaamlrr.

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 8 meses atrás #29027 por vcosta
Respondido por vcosta no tópico query para somar um campo texto
Kanaân,
Muitissimo obrigado.

Funcionou e ficou muito bom. valeu mesmo.

forte abraço
valter

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 8 meses atrás #29070 por vcosta
Respondido por vcosta no tópico query para somar um campo texto
KANAÂN,
Posso abusar do seu conhecimento?...rsrsr

como posso gravar o resultado desta query em outro campo utilizando o join?

obrigado
valter

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 8 meses atrás #29074 por kanaamlrr
Respondido por kanaamlrr no tópico query para somar um campo texto
Joga ai a query de update que tu está tentando utilizar que eu monto o exemplo...

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 8 meses atrás #29109 por vcosta
Respondido por vcosta no tópico query para somar um campo texto
WITH ValList AS(
SELECT E4_CODIGO,
CAST(LEFT(RTRIM(E4_COND),CASE WHEN PATINDEX('%,%', RTRIM(E4_COND)) = 0 THEN 50 ELSE PATINDEX('%,%', RTRIM(E4_COND)) - 1 END) AS FLOAT) Val,
RIGHT(RTRIM(E4_COND),LEN(RTRIM(E4_COND)) - PATINDEX('%,%', RTRIM(E4_COND))) Remainder--, RTRIM(E4_COND), LEN(RTRIM(E4_COND)), PATINDEX('%,%', RTRIM(E4_COND)), RIGHT(RTRIM(E4_COND),5)
FROM SE4010 --WHERE RTRIM(E4_COND) LIKE '%,%'
UNION ALL
SELECT E4_CODIGO,
CAST(LEFT(Remainder,CASE WHEN PATINDEX('%,%', Remainder) = 0 THEN LEN(Remainder) ELSE PATINDEX('%,%', Remainder) - 1 END) AS FLOAT) Val,
RIGHT(Remainder,CASE WHEN PATINDEX('%,%', Remainder) = 0 THEN 0 ELSE LEN(Remainder) - PATINDEX('%,%', Remainder) END) Remainder
FROM ValList
WHERE LEN(Remainder) > 0

)
SELECT E4_CODIGO,
SUM(Val)
FROM ValList
GROUP BY E4_CODIGO

QUERO GRAVAR O RESULTADO SUM(Val) no campo E4_MITDIAS

obrigado
Valter

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 8 meses atrás #29113 por kanaamlrr
Respondido por kanaamlrr no tópico query para somar um campo texto
WITH ValList AS(
SELECT E4_CODIGO,
CAST(LEFT(RTRIM(E4_COND),CASE WHEN PATINDEX('%,%', RTRIM(E4_COND)) = 0 THEN 50 ELSE PATINDEX('%,%', RTRIM(E4_COND)) - 1 END) AS FLOAT) Val,
RIGHT(RTRIM(E4_COND),LEN(RTRIM(E4_COND)) - PATINDEX('%,%', RTRIM(E4_COND))) Remainder--, RTRIM(E4_COND), LEN(RTRIM(E4_COND)), PATINDEX('%,%', RTRIM(E4_COND)), RIGHT(RTRIM(E4_COND),5)
FROM SE4010 --WHERE RTRIM(E4_COND) LIKE '%,%'
UNION ALL
SELECT E4_CODIGO,
CAST(LEFT(Remainder,CASE WHEN PATINDEX('%,%', Remainder) = 0 THEN LEN(Remainder) ELSE PATINDEX('%,%', Remainder) - 1 END) AS FLOAT) Val,
RIGHT(Remainder,CASE WHEN PATINDEX('%,%', Remainder) = 0 THEN 0 ELSE LEN(Remainder) - PATINDEX('%,%', Remainder) END) Remainder
FROM ValList
WHERE LEN(Remainder) > 0

)
UPDATE SE4010 SET E4_MITDIAS = TOTAL
FROM SE4010 E4 INNER JOIN 
(SELECT E4_CODIGO,
SUM(Val) AS TOTAL
FROM ValList  
GROUP BY E4_CODIGO) VL ON VL.E4_CODIGO = E4.E4_CODIGO AND D_E_L_E_T_ <> '*' AND E4.E4_FILIAL ='01'

Acho que deve funcionar!!
Faz um teste ae!!! :woohoo: :woohoo: :woohoo:

Por favor Acessar ou Registrar para participar da conversa.

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