我想在另一个表上基于COUNT(*)创建一个列,当从该表中删除一个记录时,它应该减少这个新列中的值,反之亦然。所以,这是查询:
SELECT COUNT(*)FROM dbo.Korisnik1_FakturaStavka GROUP BY dbo.Korisnik1_FakturaStavka.FakturaID
它返回:
当我尝试创建这样的计算列时:
CREATE TABLE test( NumberOF as(SELECT COUNT(*)FROM dbo.Korisnik1_FakturaStavka GROUP BY dbo.Korisnik1_FakturaStavka.FakturaID))
我收到以下错误:
Subqueries are not allowed in this context. Only scalar expressions are allowed.
以下是我想要计算的主表:
我该如何解决这个问题?
答案 0 :(得分:1)
你可以定义UDF:
create function dbo.NumberOfFakturaID(@id int) returns int as begin
return (select count(1) from Korisnik1_FakturaStavka where id=@id)
end
然后将其用作计算列:
CREATE TABLE test(FakturaID int, NumberOF as dbo.NumberOfFakturaID(FakturaID))
但是应该谨慎使用那种计算列。
答案 1 :(得分:0)
评论太长了。
您可以通过定义一个函数来计算计数并在计算列定义中使用该函数来完成此操作。但是,我不认为这对于经常使用的列是一个好主意,因为你将在幕后进行大量计算"。
备选方案: