2010-03-29 53 views
1

我有一个表,看起来是这样的:sql查询 - 如何分别计算一行中的值?

id | firstperson | secondperson 
1 | jane doe | 
2 | bob smith | margie smith 
3 | master shifu | madame shifu 
4 | max maxwell | 

我想指望所有的firstpersons +所有secondpersons的,如果secondpersons字段不为空...有没有办法要做到这一点?

+0

是空白'还是空? – Unreason 2010-03-29 12:43:21

回答

5
SELECT SUM(CASE WHEN secondperson='' THEN 1 ELSE 2 END) FROM thetable; 
2
select sum(1 + case when secondperson <> '' then 1 else 0 end) 
from MyTable 
0

我不知道这是否适用于Postgres的或没有,但在大多数数据库中,如果我们认为有可能是空值和这个问题是真的,“如果secondperson字段不为空” ,那么你必须在条件中明确包含NULLS而不是空白值。

0

SELECT SUM(CASE WHEN secondperson = '' OR secondperson IS NULL THEN ELSE 0 2 END)FROM thetable;

0

假设空白意味着NULL,则在Postgres的,就像在其他系统中,计数(场)会,如果它不是null

SELECT count(*)+count(secondperson) FROM thetable; 

会给想要的结果计算领域唯一。 (SQL语法方面的NULL更好,然后自定义值缺失数据。另外,题外话,在他们的名字有一个数字的任何字段是设计修改考生)