【发布时间】:2015-06-18 22:26:34
【问题描述】:
我想在另一个表上创建一个基于 COUNT(*) 的列,当从该表中删除一条记录时,它应该减少这个新列中的值,反之亦然。所以,这里是查询:
由 dbo.Korisnik1_FakturaStavka.FakturaID 从 dbo.Korisnik1_FakturaStavka 组中选择计数 (*)
它返回这个:
当我尝试创建这样的计算列时:
创建表测试( 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.
这是我要计算的主表:
我该如何解决这个问题?
【问题讨论】:
-
首先...坏主意...没有形式化...为什么要在数据库中保留可以轻松计算的数据...?如果你真的想这样做,我建议使用与在另一个表中添加或删除行相关联的触发器......但是如果它是一个有很多“活动”的表,这对于服务器来说可能会变得很耗时"在里面
-
您可以创建一个进行计数的Indexed View,然后,如果您需要此数据出现在另一个表中,您可以创建一个看起来像您想要的最终表,但只是将表(没有计算列)连接到索引视图。
-
(例如,我刚刚在另一个有类似要求的问题上发布了answer)
-
我想保留这个数字,因为我无法创建第二个自动增量列,所以第二个列 StavkaBroj 必须是 1,2,3... 取决于 FakturaID,例如:@ 987654323@,现在从我保留的那个号码,我将手动增加它并将其分配给 StavkaBroj
-
@Damien_The_Unbeliever ye这可能会解决问题,我认为有一个更简单的方法
标签: sql sql-server sql-server-2008