当每一列大于1时,我将对Profile表的这些列进行SUM函数。 我该怎么做?
bank docs personal
2 1 2
答案 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()。