如果我有一个包含重复值的列的表。如何向该表添加一列,以显示表中有多少条目包含该值。SQL Server将频率列添加到现有表中
我知道,你可以使用:
select id, COUNT(id) as freq
from mytable
group by id
order by freq desc
得到的频率,但我怎么在新列的原始表显示这个?
如果我有一个包含重复值的列的表。如何向该表添加一列,以显示表中有多少条目包含该值。SQL Server将频率列添加到现有表中
我知道,你可以使用:
select id, COUNT(id) as freq
from mytable
group by id
order by freq desc
得到的频率,但我怎么在新列的原始表显示这个?
我建议你创建一个视图,如果你需要这样做。
Create View vMyTable As
Select M.*, F.Freq
From MyTable M
Join (Select id, Count(id) Freq From MyTable Group By id) F On F.id = M.id
这取决于您插入/更新/删除该表的频率,以及您需要多久选择一次。
我可能会按照Joe C的观点去看待。但是,如果您不经常插入/更新/删除,并且您确实希望在表格上添加/更新/删除,则可以在插入,更新和删除时执行触发器,以便在需要时计算信息。这将是悲惨的插入,更新和删除性能,所以请记住:
create trigger dbo.MyTable_IUD
on dbo.MyTable
after insert, update, delete
as
begin
update m
set _freq = counts.freq
from dbo.MyTable m
join
(
select id, count(1) [freq]
from dbo.MyTable
where id in
(
select id from inserted
union select id from deleted
)
group by id
) counts on m.id = counts.id;
end;
go
请您举个例子吗? –
为什么把它放在桌子上?每次记录更改时需要更新 –
我有建筑物几何数据,并且有大量建筑物对应相同的ID。我想用STUnion函数合并它们。 –