SQL对条件求和多个字段

时间:2019-09-22 11:00:53

标签: sql

当每一列大于1时,我将对Profile表的这些列进行SUM函数。 我该怎么做?

bank         docs          personal
2              1             2

3 个答案:

答案 0 :(得分:0)

以下计数值大于1的行

select sum(case when bank > 1 then 1 else 0 end) as bank,
       sum(case when docs > 1 then 1 else 0 end) as docs,
       sum(case when personal > 1 then 1 else 0 end) as personal
from Profile;

以下内容计算值大于1的行中的列数:

select p.*,
       (case when bank > 1 then 1 else 0 end +
        case when docs > 1 then 1 else 0 end +
        case when personal > 1 then 1 else 0 end
       ) as cnt
from Profile p;

这是对我们问题的两种最明智的解释。

答案 1 :(得分:0)

每列值大于一的行总和:

select sum(bank + docs + personal)
from Profile
where bank > 1 and docs > 1 and personal > 1
;
with t as (
    select           0 as v0, 1 as v1 from dual
    union all select 3 as v0, 2 as v1 from dual
    )

select sum(v0 + v1)
from t
where v0 > 1 and v1 > 1
;
| SUM(V0+V1) |
| ---------: |
|          5 |

db <>提琴here

答案 2 :(得分:0)

该列大于1时各列的总和(未测试)

n.digits_[i] = i < s.length() ? s[s.length() - 1 - i] - '0' : 0;
根据您的数据和表设计,可能需要

isnull()。