Group By Queryで出力テーブルにいくつかのwhere句に基づいて一意のIDのリストを返す一連のselect文があります。select文で返される一意の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
TEAMNAME値(DocTypeIDと共にテーブルAに存在するが、私は最頻値を引き出す必要がある理由従って同じのDOCTYPE IDに対して異なる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;
注:私が正しく理解していれば、あなたは相関サブクエリまたはapply
を使用することができます