我有一个简单的select查询
select count(status_flag) STATUS_COUNT
from inward_doc_tracking_hdr
where to_user = 1279 and status_flag = 4它将结果显示为

我加入了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 它将结果显示为

所以我的问题是
为什么第二个查询显示同一
to_user的两行,其计数为2。
我正在使用sql-server-2005
发布于 2016-05-17 05:13:24
你在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 发布于 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上。
https://stackoverflow.com/questions/37267608
复制相似问题