首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MS SQL查询计数与求和

MS SQL查询计数与求和
EN

Server Fault用户
提问于 2011-01-27 22:40:11
回答 1查看 408关注 0票数 0
代码语言:javascript
复制
select count(distinct consumerno),
sum (case when  ccon like '%D%' then 1 else 0 end) as Domestic,
sum (case when ccon like '%B%' then 1 else 0 end) as Business
from consumer  left join  contract on consumerno = cconsumer
where status = 'Active'

输出

代码语言:javascript
复制
total    B        D
35952   35694   1669

有两个表:消费者和合同

我在这里试图达到的目标是获得购买产品的消费者总数,这些消费者是从商业或国内开始的。合同表有重复的消费者数字,因为他们从商业转向国内或反面。从上面可以看出,查询总数是正确的,但是对于国内和企业来说,和是错误的。任何更好的方法来实现这一点。

如有任何意见,将不胜感激。

EN

回答 1

Server Fault用户

发布于 2011-01-27 23:36:50

我假设字段“状态”在“合同”表中。最简单的方法是创建3个单独的查询,您可以确定每个查询总数的正确编号,并避免不必要的联接。

代码语言:javascript
复制
SELECT COUNT(DISTINCT consumerno) as TOTAL FROM consumer LEFT JOIN  contract ON consumerno = cconsumer WHERE status='Active';
SELECT COUNT (DISTINCT cconsumer) as B FROM contract WHERE ccon LIKE '%B%' AND status='Active';
SELECT COUNT (DISTINCT cconsumer) as D FROM contract WHERE ccon LIKE '%D%' AND status='Active';

如果有必要,您可以在占位符字段上黑出一个联接,将它们放在一个整齐的行中。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/227851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档