特定のテーブルに対して、単一のレコードセット内の各列の統計モードを返すSQLクエリが必要です。私は集約でこれを行ういくつかの方法を見ていますが、それらはすべて単一の列アプローチです。列があるのと同じくらい多くのクエリを組み合わせることなく、誰もがこれを行う方法を考えることができますか? SQL Serverにはmode()集約はありません。SQL Server - 各列の統計モード
テーブル#xに3つの列がある場合は、3つの列を持つ1つの行が必要です。 SQL Serverを使用した例を次に示します。それは、テーブルの定義に合わせて非常に重く持ち上げています。私はよりクリーンでより一般化されたアプローチを探しています。私は別の時間に別のテーブルでこれをやりたいかもしれません。
create table #x (name varchar(20), age int, city varchar(20))
insert into #x values ('Bill', 20, 'NYC')
insert into #x values ('Bill', 15, 'NYC')
insert into #x values ('Mary', 29, 'LA')
insert into #x values ('Bill', 30, 'NYC')
insert into #x values ('Bill', 30, 'NYC')
insert into #x values ('Bill', 20, 'LA')
insert into #x values ('Mary', 20, 'NYC')
insert into #x values ('Joe', 12, 'NYC')
insert into #x values ('Fred', 55, 'NYC')
insert into #x values ('Alex', 41, 'NYC')
insert into #x values ('Alex', 30, 'LA')
insert into #x values ('Alex', 10, 'Chicago')
insert into #x values ('Bill', 20, 'NYC')
insert into #x values ('Bill', 10, 'NYC')
create table #modes (_column varchar(20), _count int, _mode varchar(20))
insert into #modes select top 1 'name' _column, count(*) _count, name _mode from #x group by name order by 2 desc
insert into #modes select top 1 'age' _column, count(*) _count, age _mode from #x group by age order by 2 desc
insert into #modes select top 1 'city' _column, count(*) _count, city _mode from #x group by city order by 2 desc
select name, age, city from (select _mode, _column from #modes) m
pivot (max(_mode) for _column in (name, age, city)) p
あなたはいくつかのサンプルデータとの例と所望の出力と更新後の予想結果 – TheGameiswar
と説明していただけます。 – bvy