Sql 如何为select语句返回的唯一ID范围返回最频繁的值
我有一系列select语句,它们根据GROUPBY查询中的几个where子句将唯一ID的列表返回到输出表中 我还希望能够从输出表中ID所在的表中选择最频繁的TeamName值 i、 e.输出表显示Sql 如何为select语句返回的唯一ID范围返回最频繁的值,sql,tsql,select,merge,count,Sql,Tsql,Select,Merge,Count,我有一系列select语句,它们根据GROUPBY查询中的几个where子句将唯一ID的列表返回到输出表中 我还希望能够从输出表中ID所在的表中选择最频繁的TeamName值 i、 e.输出表显示 DocTypeID | No Source | No Date | No RefNo | TeamName --------------- |---------------- |------------- |------------------|
DocTypeID | No Source | No Date | No RefNo | TeamName
--------------- |---------------- |------------- |------------------| -------------
926c4185 | 2 | 1 | 69 | NULL
bff5be99 | 3 | 3 | 5368 | NULL
a04d4rf | NULL | NULL | 26 | NULL
TeamName值与DocTypeID一起存在于TableA中,但对于同一DocTypeID,可能存在不同的TeamName值,因此我需要提取不为NULL的最频繁值
我可以用这样的方法确定最频繁的值-
select top 1 [TeamName] , count([TeamName]) 'count'
from Documents
where DocTypeID = '926c4185'
group by [TeamName]
order by count desc
但是我在尝试用TeamName值更新输出表时遇到了困难。我尝试过合并表,但没有成功,但不确定这是否是正确的方法
抱歉说得含糊不清,如果你能指出正确的方向,我将不胜感激。如有必要,可以提供更多详细信息如果我理解正确,您可以使用相关子查询或应用: 注意:如果多个团队出现的频率相同,则任意选择一个
select ot.*, d.TeamName
from outputtable ot outer apply
(select top 1 d.TeamName, count(*) as cnt
from Documents d
where d.DocTypeID = ot.DocTypeId
group by d.TeamName
order by cnt desc
) d;