例如,我有下表:
date | id | num
01-01 | a | 10
01-02 | a | 14
01-02 | b | 2
01-03 | a | 19
01-03 | b | 5
01-04 | a | 13
Run Code Online (Sandbox Code Playgroud)
我想.减去num的b距离a,也就是说,其结果将是:
01-01 | 10 //10
01-02 | 12 //14-2
01-03 | 14 //19-5
01-04 | 13 //13
Run Code Online (Sandbox Code Playgroud)
我尝试以下SQL查询,但如果没有的记录b上date,它将返回\N.
SELECT tba.date, numall-numout
FROM (
SELECT date, num AS numall
FROM tb
WHERE id = "a"
) tba
LEFT JOIN (
SELECT date, num AS numout
FROM tb
WHERE id = "b"
) tbb
ON tba.date = tbb.date
Run Code Online (Sandbox Code Playgroud)
如果没有匹配的B,左连接将返回null,这意味着你正在做
numall - NULL
Run Code Online (Sandbox Code Playgroud)
这导致NULL.要解决这个问题,你必须这样做
numall - COALESCE(numout, 0)
Run Code Online (Sandbox Code Playgroud)
强制0为不存在的'b'日期.
| 归档时间: |
|
| 查看次数: |
1288 次 |
| 最近记录: |