我有一系列select语句,它们根据Group By Query中的几个where子句返回一个唯一ID列表到输出表中。
我还希望能够选择的是输出表中存在ID的表中最常见的TeamName值。
即。输出表显示
DocTypeID | No Source | No Date | No RefNo | TeamName
--------------- |---------------- |------------- |------------------| -------------
926c4185 | 2 | 1 | 69 | NULL
bff5be99 | 3 | 3 | 5368 | NULL
a04d4rf | NULL | NULL | 26 | NULL
TeamA值与TableTypeID一起存在于TableA中,但是对于相同的Doctype ID,可能存在不同的TeamName值,因此我需要提取最常用的值(即非NULL)。
我可以用这样的东西确定最常见的价值 -
select top 1 [TeamName] , count([TeamName]) 'count'
from Documents
where DocTypeID = '926c4185'
group by [TeamName]
order by count desc
但是在尝试使用TeamName值更新输出表时我正在努力。我没有成功地尝试合并表,但不确定这是否是正确的方法。
对模糊的道歉,正确方向上的一点将非常感激。如有必要,可以提供更多细节
答案 0 :(得分:1)
如果我理解正确,您可以使用相关子查询或apply
:
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;
注意:如果多个团队频繁出现,则可以任意选择一个团队。