是否可以在计算列中使用求和函数? 如果是,我想创建一个计算列,该列计算日期小于该条目日期的同一表中的列总和。这可能吗? 最后,这是否可以优化下面的示例视图中对该值的重复调用?
$("#submitbtn").mouseover(function(e) {
console.log("Hover");
$.(":focus").blur();
removeTimeouts();
$("#submitbtn").focus();
e.preventDefault();
e.stopPropagation();
e.cancelBubble = true;
});
....
function placeCursor(id) {
id.focus(function(e) {
e.stopPropagation();
//e.cancelBubble();
id.caretToEnd();
});
id.focus();
return false;
}
答案 0 :(得分:0)
是否可以在计算列中使用求和函数?
是的,可以为您的计算列使用scalar valued function(标量UDF),但这将是一场灾难。将标量UDF用于计算列会破坏性能。添加访问数据的标量UDF(在此需要)将使情况变得更糟。
在我看来,您只需要一个良好的老式索引即可加快处理速度。首先是一些示例数据:
IF OBJECT_ID('dbo.somelist','U') IS NOT NULL DROP TABLE dbo.somelist;
GO
CREATE TABLE dbo.somelist
(
ProductGroup INT NOT NULL,
[Month] TINYINT NOT NULL CHECK ([Month] <= 12),
Sales DECIMAL(10,2) NOT NULL
);
INSERT dbo.somelist
VALUES (1,1,22),(2,1,45),(2,1,25),(2,1,19),(1,2,100),(1,2,200),(2,2,50.55);
和正确的索引:
CREATE NONCLUSTERED INDEX nc_somelist ON dbo.somelist(ProductGroup,[Month])
INCLUDE (Sales);
有了此索引,此查询将非常高效:
SELECT s.ProductGroup, s.[Month], SUM(s.Sales)
FROM dbo.somelist AS s
GROUP BY s.ProductGroup, s.[Month];
如果您需要按月份和产品组获取COUNT,则可以创建一个索引视图,如下所示:
CREATE VIEW dbo.vw_somelist WITH SCHEMABINDING AS
SELECT s.ProductGroup, s.[Month], TotalSales = COUNT_BIG(*)
FROM dbo.somelist AS s
GROUP BY s.ProductGroup, s.[Month];
GO
CREATE UNIQUE CLUSTERED INDEX uq_cl__vw_somelist ON dbo.vw_somelist(ProductGroup, [Month]);
建立索引视图后,您的COUNT将被预先汇总。但是,您不能在索引视图中包括SUM。