我有一个简单的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
以
显示结果所以我的问题是
为什么第二个查询显示了计数为 2 的同一
to_user
的两行。
我正在使用sql-server-2005
答案 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
上。