MySQL从相同的值计算
我有一个疑问:MySQL从相同的值计算,mysql,Mysql,我有一个疑问: SELECT `item_code`, `q_rr`, `q_srs`, @running_bal := @running_bal + (`q_rr` - `q_srs`) as `Balance` FROM records, (SELECT @running_bal := 0) tempName order by records.item_code, records.date 其结果是: item
SELECT `item_code`,
`q_rr`,
`q_srs`,
@running_bal := @running_bal + (`q_rr` - `q_srs`) as `Balance`
FROM records, (SELECT @running_bal := 0) tempName
order by
records.item_code,
records.date
其结果是:
item_code | q_rr | q_srs | balance
--------------------------------------------
0F02206A 2 0 2
BR00113D 3 0 5
BR00114D 10 0 15
BR00114D 0 1 14
BR00114D 0 1 13
BR00115D 20 0 33
BR00115D 0 1 32
BR00115D 0 1 31
如果q_rr(+)和q_srs(-),需要帮助生成计算余额的结果,并根据项目代码进行计算
item_code | q_rr | q_srs | balance
--------------------------------------------
0F02206A 2 0 2
BR00113D 3 0 3
BR00114D 10 0 10
BR00114D 0 1 9
BR00114D 0 1 8
BR00115D 20 0 20
BR00115D 0 1 19
BR00115D 0 1 18
试试这个:
SELECT `item_code`,
`id`,
`type`,
@running_bal := case when type = 0 then id
else @running_bal + (`id` - `type`) end as `Balance`
FROM supportContacts, (SELECT @running_bal := 0) tempName
order by
supportContacts.item_code
我添加了
@code
变量来跟踪项目\u代码
更改:
SELECT
r.item_code,
r.q_rr,
r.q_srs,
@running_bal := IF(@code = r.item_code, @running_bal, 0) + (r.q_rr - r.q_srs) as Balance,
@code := r.item_code AS dummy
FROM
records r
CROSS JOIN
(SELECT @running_bal := 0, @code := '') tempName
ORDER BY
r.item_code,
r.date
SQL Fiddle:
您可以通过将此列作为子查询放入另一个select中来消除伪列
:
SELECT item_code, q_rr, q_srs, Balance
FROM (
-- there put first query
) r
SQL Fiddle:您能帮助在sqlfiddle中创建并共享链接吗?