Мне нужна помощь для суммирования каждого значения, где код такой же, это мои данные
OFFICECODE | DATE | VAL
10200 | 2018-05-01 | 1
10200 | 2018-05-02 | 2
10100 | 2018-05-01 | 3
10100 | 2018-05-02 | 2
я хочу получить этот результат
OFFICECODE | DATE | SUM(VAL)
10200 | 2018-05-01 | 1
10200 | 2018-05-02 | 3 (1+2)
10100 | 2018-05-01 | 3
10100 | 2018-05-02 | 5 (3+2)
Я пробую этот запрос, но результат суммирует все OFFICECODE
SELECT
A.OFFICELKD,
A.DATE,
A.VAL,
@VAL := @VAL + A.VAL AS 'VALSUM'
FROM
( SELECT
cur.OFFICELKD,
cur.DATE,
cur.VAL
FROM
tblReport cur
LEFT JOIN
tblReport pre
ON cur.OFFICECODE = pre.OFFICECODE
GROUP BY cur.ID
ORDER BY
OFFICECODE ) AS A,
( SELECT @VAL := 0 ) AS SqlA
ORDER BY OFFICECODE, DATE
пожалуйста, помогите мне исправить это
Вы близки. Вы должны учитывать OFFICECODE
:
SELECT r.*,
(@val := if(@o = r.OFFICECODE, @val + a.val,
if(@o := r.OFFICECODE, a.val, a.val)
)
) as valsum
FROM (SELECT r.*
FROM tblReport r
ORDER BY OFFICECODE, DATE
) r CROSS JOIN
( SELECT @o := -1, @VAL := 0 ) params;