首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL计数未正确显示结果

SQL计数未正确显示结果
EN

Stack Overflow用户
提问于 2016-05-17 05:10:35
回答 2查看 354关注 0票数 0

我有一个简单的select查询

代码语言:javascript
运行
复制
select count(status_flag) STATUS_COUNT
from inward_doc_tracking_hdr
where to_user = 1279  and status_flag = 4

它将结果显示为

我加入了user_mst表,如下所示:

代码语言:javascript
运行
复制
SELECT COUNT (a.status_flag) counts, a.mkey, a.to_user, b.email,
       b.first_name + ' ' + b.last_name name
FROM inward_doc_tracking_hdr a
    LEFT JOIN user_mst b ON a.to_user = b.mkey
WHERE a.to_user = '1279' AND a.status_flag = '4' 
group by a.mkey, a.to_user, b.email, b.first_name,b.last_name 

它将结果显示为

所以我的问题是

为什么第二个查询显示同一to_user的两行,其计数为2

我正在使用sql-server-2005

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-17 05:13:24

你在mkey上分组,这也是为什么它显示了两个不同的计数。使用下面的查询可能对您有帮助。

代码语言:javascript
运行
复制
SELECT COUNT (a.status_flag) counts,  a.to_user, b.email, b.first_name + ' ' + 
b.last_name name FROM inward_doc_tracking_hdr a LEFT JOIN user_mst b 
ON a.to_user = b.mkey WHERE a.to_user = '1279' AND a.status_flag = '4' 
Group by  a.to_user, b.email, b.first_name,b.last_name 
票数 1
EN

Stack Overflow用户

发布于 2016-05-17 05:29:17

我认为您还不了解多个键上的group by是如何工作的--只需阅读Using group by on multiple columns就可以提供有关它的信息,并且肯定会解决您的SQL中存在的问题。

此外,您得到两行的问题是因为列mkey在两行上都不同。

我也无法理解为什么,在group by中放置了这么多列,因为您已经在

LEFT JOIN user_mst b ON a.to_user = b.mkey

因此,您清楚地知道行是如何连接的(用户只使用相应的用户数据进行映射),所以我认为只有group by应该在a.to_user上。

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

https://stackoverflow.com/questions/37267608

复制
相关文章

相似问题

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