我有一个表,看起来是这样的:sql查询 - 如何分别计算一行中的值?
id | firstperson | secondperson
1 | jane doe |
2 | bob smith | margie smith
3 | master shifu | madame shifu
4 | max maxwell |
我想指望所有的firstpersons +所有secondpersons的,如果secondpersons字段不为空...有没有办法要做到这一点?
我有一个表,看起来是这样的:sql查询 - 如何分别计算一行中的值?
id | firstperson | secondperson
1 | jane doe |
2 | bob smith | margie smith
3 | master shifu | madame shifu
4 | max maxwell |
我想指望所有的firstpersons +所有secondpersons的,如果secondpersons字段不为空...有没有办法要做到这一点?
SELECT SUM(CASE WHEN secondperson='' THEN 1 ELSE 2 END) FROM thetable;
select sum(1 + case when secondperson <> '' then 1 else 0 end)
from MyTable
我不知道这是否适用于Postgres的或没有,但在大多数数据库中,如果我们认为有可能是空值和这个问题是真的,“如果secondperson字段不为空” ,那么你必须在条件中明确包含NULLS而不是空白值。
SELECT SUM(CASE WHEN secondperson = '' OR secondperson IS NULL THEN ELSE 0 2 END)FROM thetable;
假设空白意味着NULL,则在Postgres的,就像在其他系统中,计数(场)会,如果它不是null
SELECT count(*)+count(secondperson) FROM thetable;
会给想要的结果计算领域唯一。 (SQL语法方面的NULL更好,然后自定义值缺失数据。另外,题外话,在他们的名字有一个数字的任何字段是设计修改考生)
是空白'还是空? – Unreason 2010-03-29 12:43:21