對於給定的表,我想要一個SQL查詢,它返回單個記錄集中每列的統計模式。我看到了幾種使用聚合的方法,但它們都是單列方法。任何人都可以想出一種方法來做到這一點,而不需要像列上那樣查詢儘可能多的查詢的聯合? SQL Server中沒有mode()聚合。SQL Server - 每列的統計模式
如果表#x有3列,我想單行3列。這裏是一個使用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