SQL计数未正确显示结果

时间:2016-05-17 05:10:35

标签: sql sql-server-2005

我有一个简单的select查询

select count(status_flag) STATUS_COUNT
from inward_doc_tracking_hdr
where to_user = 1279  and status_flag = 4

显示结果

Simple SELECT

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

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 

显示结果

JOIN QUERY

所以我的问题是

  

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

我正在使用sql-server-2005

2 个答案:

答案 0 :(得分:1)

你正在对mkey进行分组,这就是为什么它会显示两个不同的计数。 使用以下查询可能会对您有所帮助。

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 :(得分:1)

我认为你还没有理解多个密钥上的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上。