将所有结果返回到一列,但使用where语句过滤另一列

时间:2014-02-23 23:12:11

标签: join sqlite union

使用SQlite 3,并有一个如下所示的表

PKEY|TS      | A |B  |C
 1  |00:05:00|200|200|200
 2  |00:10:00|100|100|100
 3  |00:15:00|   |25 |
 4  |00:20:00|   |   |

目前我正在使用

select ts, (a+b+c) from tablename WHERE a !='null' AND b !='null' and c !='null';"

返回

TS      | (a+b+c)
00:05:00|600
00:10:00|300

我希望我的结果如下所示:

TS      | total
00:05:00|600
00:10:00|300
00:15:00|
00:20:00|

换句话说,我总是希望从TS列返回所有内容,但除非A,B和C具有值,否则我不想返回总数。

我想我可能需要一个联合或联接,但我似乎无法找到一个示例,其中始终返回单个列的结果。

1 个答案:

答案 0 :(得分:0)

a != 'null'的测试永远不会成真。你需要使用a is not null

但是,如果任何数字为null,则返回null total,只需执行以下操作:

select ts, a+b+c
from tablename;

为什么这样做?因为在SQL中,如果表达式的任何部分为null,则整个表达式为null。当你认为null意味着“未知”时,这是有道理的。从逻辑上讲,当部分计算未知时,结果是未知的。