SQL使用Select中的SUM()在视图上创建索引

SQL使用Select中的SUM()在视图上创建索引,sql,view,indexing,Sql,View,Indexing,使用SQL2005,我需要创建一个视图来显示select语句,如下所示: select c1.personid, Max(c1.call_Date) Call_Date, Sum(s1.quantity) Num_Boxes, from dbo.kits_dropped s1 inner join dbo.calls c1 on(c1.callsid = s1.callsid) Where s1.product_name = 'Product X' GRoup by c1.personid 如

使用SQL2005,我需要创建一个视图来显示select语句,如下所示:

select c1.personid, Max(c1.call_Date) Call_Date, Sum(s1.quantity) Num_Boxes,
from dbo.kits_dropped s1
inner join dbo.calls c1 on(c1.callsid = s1.callsid)
Where s1.product_name = 'Product X'
GRoup by c1.personid
如何在上述视图中创建personID索引


谢谢

这里有一个关于创建的指南

这可能会让您开始,它显示了一个在
personid
上具有聚集索引的视图:

CREATE VIEW MyView WITH SCHEMABINDING AS 

SELECT 
        c1.personid, 
        MAX(c1.call_Date) AS Call_Date, 
        SUM(s1.quantity) AS Num_Boxes,
FROM dbo.kits_dropped s1
INNER JOIN dbo.calls c1 ON (c1.callsid = s1.callsid)
WHERE s1.product_name = 'Product X'
GROUP BY c1.personid

GO

CREATE UNIQUE CLUSTERED INDEX MyViewInd ON MyView(personid)

如果您遇到上述问题,请发表评论。

以下是有关创建的指南

这可能会让您开始,它显示了一个在
personid
上具有聚集索引的视图:

CREATE VIEW MyView WITH SCHEMABINDING AS 

SELECT 
        c1.personid, 
        MAX(c1.call_Date) AS Call_Date, 
        SUM(s1.quantity) AS Num_Boxes,
FROM dbo.kits_dropped s1
INNER JOIN dbo.calls c1 ON (c1.callsid = s1.callsid)
WHERE s1.product_name = 'Product X'
GROUP BY c1.personid

GO

CREATE UNIQUE CLUSTERED INDEX MyViewInd ON MyView(personid)

如果您遇到上述问题,请发表评论。

可能适用于您的问题。。可能适用于您的问题。.啊,索引视图不喜欢MAX。要解决这个问题,您可以使用
bit
列检查并修改删除的
kits
,如果可能的话,并将最近(MAX)
调用日期
记录的值设置为
1
,视图定义必须包含COUNT\u BIG(*),正如您在文章中链接的手册页面所示。啊,索引视图不喜欢MAX。要解决这个问题,您可以签出并修改删除的
kits\u
,如果可能的话,使用
bit
列,并将最新(MAX)的值设置为
1
Call\u Date
record.
如果存在GROUP BY,则视图定义必须包含COUNT\u BIG(*)
,这与您在文章中链接的手册页面一致。