sql中如何求两列的和

时间:2021-03-26 10:35:28
 想实现:
select count(*) from student where firstphonecode is not null and firstphonecode!=''
select count(*) from student where secondphonecode is not null and secondphonecode!=''
第一个的结果:791
第二个的结果:398

我想一下子得到:1189

9 个解决方案

#1



select 
 SUM(CASE WHEN firstphonecode!='' THEN 1 ELSE 0 END  )
 +
 SUM(CASE WHEN secondphonecode!='' THEN 1 ELSE 0 END  )
 from student 

这样应该就可以了。

#2


select count(firstphonecode) + count(secondphonecode)
from student
where firstphonecode!='' and (firstphonecode is not null or secondphonecode is not null)

#3



declare @student table 
(firstphonecode varchar(4),secondphonecode varchar(4))
insert into @student
select 1,4 union all
select 2,5 union all
select 3,6 union all
select null,null union all
select null,5 union all
select 8,null union all
select '','' union all
select null,9

--select * from @student
select 
 SUM(CASE WHEN firstphonecode!='' THEN 1 ELSE 0 END  )
 +
 SUM(CASE WHEN secondphonecode!='' THEN 1 ELSE 0 END  )
 from @student 
/* 
11
*/
--楼上答案不完整

#4


引用 2 楼 sqlcenter 的回复:
SQL code
select count(firstphonecode) + count(secondphonecode)
from student
where firstphonecode!='' and (firstphonecode is not null or secondphonecode is not null)


看错逻辑

select count(firstphonecode) + count(secondphonecode)
from student
where isnull(firstphonecode,'')!='' or isnull(secondphonecode,'')!=''

#5



declare @student table 
(firstphonecode varchar(4),secondphonecode varchar(4))
insert into @student
select 1,4 union all
select 2,5 union all
select 3,6 union all
select null,null union all
select null,5 union all
select 8,null union all
select '','' union all
select null,9

select 
(select count(*) from @student 
where firstphonecode is not null and firstphonecode<>'')
+
(select count(*) from @student 
where secondphonecode is not null and firstphonecode<>'')

/* 直接加上就可以了
9
*/

#6


引用 2 楼 sqlcenter 的回复:
SQL code
select count(firstphonecode) + count(secondphonecode)
from student
where firstphonecode!='' and (firstphonecode is not null or secondphonecode is not null)

1楼的正解.2楼的条件没有法一致.我是想只所有不为空都统计.
而在一个where中还真难实现!

#7


唉,晕了,还有=''的

select count(nullif(firstphonecode,'')) + count(nullif(secondphonecode,''))
from student
where isnull(firstphonecode,'')!='' or isnull(secondphonecode,'')!=''

#8


select count(*) from student where (firstphonecode is not null  or secondphonecode is not null ) and firstphonecode!=''

#9



select 
 SUM(CASE WHEN firstphonecode!='' THEN 1 ELSE 0 END  )
 +
 SUM(CASE WHEN secondphonecode!='' THEN 1 ELSE 0 END  )
 from @student 
where firstphonecode  is not null
  or  secondphonecode is not null;

#1



select 
 SUM(CASE WHEN firstphonecode!='' THEN 1 ELSE 0 END  )
 +
 SUM(CASE WHEN secondphonecode!='' THEN 1 ELSE 0 END  )
 from student 

这样应该就可以了。

#2


select count(firstphonecode) + count(secondphonecode)
from student
where firstphonecode!='' and (firstphonecode is not null or secondphonecode is not null)

#3



declare @student table 
(firstphonecode varchar(4),secondphonecode varchar(4))
insert into @student
select 1,4 union all
select 2,5 union all
select 3,6 union all
select null,null union all
select null,5 union all
select 8,null union all
select '','' union all
select null,9

--select * from @student
select 
 SUM(CASE WHEN firstphonecode!='' THEN 1 ELSE 0 END  )
 +
 SUM(CASE WHEN secondphonecode!='' THEN 1 ELSE 0 END  )
 from @student 
/* 
11
*/
--楼上答案不完整

#4


引用 2 楼 sqlcenter 的回复:
SQL code
select count(firstphonecode) + count(secondphonecode)
from student
where firstphonecode!='' and (firstphonecode is not null or secondphonecode is not null)


看错逻辑

select count(firstphonecode) + count(secondphonecode)
from student
where isnull(firstphonecode,'')!='' or isnull(secondphonecode,'')!=''

#5



declare @student table 
(firstphonecode varchar(4),secondphonecode varchar(4))
insert into @student
select 1,4 union all
select 2,5 union all
select 3,6 union all
select null,null union all
select null,5 union all
select 8,null union all
select '','' union all
select null,9

select 
(select count(*) from @student 
where firstphonecode is not null and firstphonecode<>'')
+
(select count(*) from @student 
where secondphonecode is not null and firstphonecode<>'')

/* 直接加上就可以了
9
*/

#6


引用 2 楼 sqlcenter 的回复:
SQL code
select count(firstphonecode) + count(secondphonecode)
from student
where firstphonecode!='' and (firstphonecode is not null or secondphonecode is not null)

1楼的正解.2楼的条件没有法一致.我是想只所有不为空都统计.
而在一个where中还真难实现!

#7


唉,晕了,还有=''的

select count(nullif(firstphonecode,'')) + count(nullif(secondphonecode,''))
from student
where isnull(firstphonecode,'')!='' or isnull(secondphonecode,'')!=''

#8


select count(*) from student where (firstphonecode is not null  or secondphonecode is not null ) and firstphonecode!=''

#9



select 
 SUM(CASE WHEN firstphonecode!='' THEN 1 ELSE 0 END  )
 +
 SUM(CASE WHEN secondphonecode!='' THEN 1 ELSE 0 END  )
 from @student 
where firstphonecode  is not null
  or  secondphonecode is not null;