2012-03-29 39 views
1

創建索引使用SQL2005,我需要創建一個視圖如下顯示select語句:SQL上的查看與SUM()中選擇

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指數視圖?

謝謝!

+0

http://stackoverflow.com/q/2615617/1176601可能適用於你的問題.. – Aprillion 2012-03-29 18:28:19

回答

5

以下是創建indexed views in SQL 2005的指南。

這可能讓你開始,這顯示了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) 

如果遇到上述任何問題,請評論。

+0

試過這個,它抱怨使用「MAX」...... – user651942 2012-03-29 18:37:52

+0

啊,索引視圖不喜歡MAX 。要解決此問題,可以查看[由Adam Haines在此MSDN論壇帖子中提出的解決方案](http://social.msdn.microsoft.com/Forums/zh-CN/transactsql/thread/c93e0e03-f99d-4659 -a1f1-9fd04c9a4130 /),如果可能的話用'bit'列修改'kits_dropped',並且爲最近的(MAX)'Call_Date'記錄設置值爲'1'。 – 2012-03-29 18:46:13

+5

'如果存在GROUP BY,則根據您在帖子中鏈接的手冊頁,VIEW定義必須包含COUNT_BIG(*)'。 – 2012-03-30 06:51:28