如果我有一個包含重複值的列的表。如何向該表添加一列,以顯示錶中有多少條目包含該值。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函數合併它們。 –